首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转 PhpStorm 系列(十一):编码风格篇

在 PhpStorm 中,我们可以通过配置实现根命名空间与指定目录的映射,进而在创建 PHP 时通过 PSR-4 自动载入标准根据所在的目录路径生成对应的命名空间;还可以通过外部 PHP Code...4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories...选中要设置命令空间的 app 目录,可以看到当前它与 \App 根命名空间映射,你可以点击右侧小红框内的铅笔按钮进行编辑,在包前缀输入框中将其调整为你自己的应用名称: ?...点击「OK」按钮保存,接下来,应用该更改,再到 app 目录下新建,可以看到根命名空间已经变成了 Xueyuanjun,而不再是 App: ?...通过这种方式,我们可以很方便地在 PhpStorm 中修改命名空间并且基于 PSR-4 自动载入标准新建 PHP

2.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

PHP PSR规范

function_exists('bar')) { function bar() { // function body } } 命名空间命名空间必须遵循...的名称: 每个都有自己的命名空间,且都在顶级命名空间下,名必须使用驼峰式(CamelCase)。 PHP 5.3 及以上,必须使用正式的命名空间,例如: <?...命名空间和use声明: 现在,namespace声明之后必须要有一个空行,而且use声明必须放在namespace之后,必须分别使用use引入命名空间,而且use后要有空行,例如: <?...编写一个PSR-4自动加载器 PSR-4规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和PHP命名空间组织代码,PSR-4规范以来PHP命名空间和文件系统目录结构查找并加载PHP、接口和...= substr($class, $len); // 把命名空间前缀替换成根目录, // 在去掉前缀的名中,把命名空间分隔符替换成目录分隔符, // 然后在后面加上

1.4K20

PHP的PSR系列规范都有啥内容

“_”符号在命名空间中没有明确含义 符合命名标准的命名空间名必须以“.php”结尾来加载文件 Vendor Name,命名空间名可以由大小写字母组成,其中命名空间名是大小写敏感的以保证多系统兼容性...命名空间必须遵守PSR-0标准 名必须使用StudlyCaps写法 中的常量必须只由大写字母和下划线(_)组成 方法名必须使用cameCase写法 PSR-2(Coding Style Guide...> 完全限定名必须有一个顶级命名空间(Vendor Name) 完全限定名可以有多个子命名空间 完全限定名应该有一个终止名 下划线在完全限定名中是没有特殊含义的 字母在完全限定名中可以是任何大小写的组合...所有名必须以大小写敏感的方式引用 当从完全限定名载入文件时: 在完全限定名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录 在「命名空间前缀...文件名必须和终止名大小写匹配 自动载入器的实现不可抛出任何异常,不可引发任何等级的错误;也不应返回值 注:具体规范内容参考了其他中文翻译版本整理。

92470

【译】现代化的PHP开发--PSR规范

我们可以在代码中的任何地方定义这个函数,当调用未定义的时,php将自动使用这个函数加载的文件。这是在php因错误而失败之前加载定义的最后一次机会。...文件只能使用无Bom的UTF-8编码格式的PHP代码 文件应声明符号(、函数、常量等)或导致SID效果(例如生成输出、更改.ini设置等),但不应同时声明这两者。 命名空间必须遵循PSR-0。...名必须用首字母大写驼峰式声明 常量必须使用下划线分隔符以大写形式声明。 方法名必须用首字母小写驼峰式声明。 在PSR-1的基础上,PSR-2提供了更全面的指导,如基础的代码缩进等更详细的规则。...它还涵盖了编码风格的各个方面,从命名约定到名称空间、属性、方法、控制结构和闭包。从PSR-2中都可以找到您需要的任何规范。为了实现可互操作性,我们非常鼓励您根据此标准调整您的代码。...这不仅是一个痛苦的过程,而且感觉是错误的,因为毕竟他们都在做同样的工作:日志记录。我们应该要去调换他们。 PSR-3为日志库提供了通用接口。

57920

PSR-各个框架遵循的统一编码规范现代PHPer的开发规范

比如我们在定义变量的时候定义为同一个变量,在循环中,可能会直接覆盖,得不到你想要的值 自动加载 PHP 的命名空间 必须 遵守 PSR-4 自动加载器标准 接着给后面看 PSR-4 的具体解释 的名称...PHP 的名称必须使用驼峰式,又名标题式,PHP 5.3 及以后版本的代码 必须 使用正式的命名空间,5.2.x 及之前的版本 应该 使用伪命名空间的写法 驼峰式和分词式这两种写法,驼峰式就是ShenYan...方法的命名命名方式有些相似,不过还是有些区别的,命名规定首字母大写ShenYan,而方法的命名规定首字母小写shenYan PSR-2:编码风格规范 PSR-2规范是在PSR-1基本代码规范的继承与扩展...类似的,使用 use 关键字声明命名空间或为命名空间创建别名时,在一系列 use 声明语句后要加一个空行 类似于这样 <?...PSR-ME:制定自己的 PHP 规范 遵循 PSR-1、PSR-2 的使用规范 合适、精简的变量、方法、命名,能让人看一眼就清楚是做什么的 尽量编写出高内聚、低耦合的代码 保持代码结构整洁、美观 PHP-FIG

84020

Rust竟然没有异常处理?

从“正常到异常的程度”上,大致上可以归为4: 0 正常:不要用异常来进行流程控制,异常只用来处理“意外”。...前面提到的非法字符、找不到文件、连接不上,基本是公认的“意外”情况,基本都使用抛出异常的方式,但是这种情况,通常都会进行捕获,并进行恢复。 3 无法意料的致命意外,不可恢复。...通常这种情况是: Bug:逻辑错误导致的溢出、除0; 致命错误:比如Java的JVM产生的Error; 2. Rust的Panic! Rust里没有异常。...没有什么情理中的意外,网络连不上、文件找不到、非法输入,统统都用返回值的方式。 1 致命错误,不可恢复,非崩不可。 一旦存在不可恢复的错误,Rust使用Panic!宏来终止程序(线程)。...Result枚举的泛型定义如下: enum Result{ Ok(T), Err(E), } 在Rust标准库中,可以找到许多以Result命名的类型,它们通常是Result泛型的特定版本

1.6K30

PHP命名空间(Namespace)初探

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者出现相同的名字,否则会产生一个致命错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。.../common_inc.php'; $filter_XSS = new FilterXSS(); //出现致命错误找不到Blog\Article\FilterXSS $filter_XSS =...> 复制代码 我注意到,如果导入元素的时候,当前空间有相同的名字元素将会怎样?显然结果会发生致命错误。 例: <?...= 'Common'; //实际会被当作非限定名称,也就表示当前空间的Common,但我当前没有创建Common $common = new $common_class_name(); //发生致命错误...Article空间下的Common,但我下面只定义了Blog\Article空间而不是Article空间 $common = new $common_class_name(); //发生致命错误:Article

1.7K10

php 抛出异常使用场景

如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误致命错误),并且输出 “Uncaught Exception” (捕获异常...在特定的情况下,还是存在会致命错误,比如内存不足之类,也会像之前一样立即中止脚本。PHP 7 中捕获的异常依旧时致命错误。...这意味着,如果 PHP 5.x 中捕获的异常,在 PHP 7 中依旧是致命错误。 注意,例如警告或是通知错误在 PHP 7 中保持不变,只有致命错误或是可恢复性错误会抛出异常。...致命或是可恢复性错误的抛出并不延伸自 Exception 。这种分离是为了防止现存的 PHP 5.x 代码接收到的错误异常调用到终止程序。...致命或是可恢复错误抛出的异常将实例化一个新的异常:Error。和其他异常相同,被捕获到的 Error 将会在最后一个程序块执行完毕之后再行处理。

1.8K30

PHP错误类型及屏蔽方法

致命错误(Fatal errors) 这些就是严重的错误,比如你想要初始化一个根本不存在的的对象,或调用一个不存在的函数,这些错误会导致程序停止运行,PHP也会把这些错误展现给用户。...E_PARSE:语法解析错误。 E_CORE_ERROR:在PHP启动时发生的致命错误。 E_CORE_WARNING:报告在PHP启动时发生的非致命错误。...E_COMPILE_ERROR:编译时发生的致命错误,指出脚本的错误。 E_USER_ERROR:用户产生的错误信息。 E_USER_WARNING:用户产生的警告信息。...E_STRICT:编码标准化警告,运行时发生的错误。 E_RECOVERABLE_ERROR:接近致命的运行时错误,若未被捕获则视同E_ERROR。 E_ALL:捕获所有的错误和警告。...屏蔽PHP错误提示 方法一:在有可能出错的函数前加@,然后or die("") 如: @mysql_connect(...) or die("Database Connect Error") 方法二:编辑

1.6K80

PHP进阶学习之类的自动加载机制原理分析

本文实例讲述了PHP的自动加载机制。分享给大家供大家参考,具体如下: 前言 我们在常见的PHP的主流框架中通常写好一个只需写好相应的命名空间或直接实例化就可以实现的使用。...在使用或者定义了命名空间时,只需要直接实例化使用,PHP机制在会库中查找该类文件进行路径引入,查找不到时才会抛出异常。...因此,只要在该方法内编写的路径引入逻辑,就能自动加载到该类并实现实例化。如果仍然查找不到,则会抛出一个异常。...void __autoload ( string $class ) 在PHP5.3之前,__autoload函数抛出的异常不能被catch语句块捕获并会导致一个致命错误(FatalError)。...或require进来的,查找不到的情况下再采用的自动加载机制; 3、如果类名比如被用于call_user_func(),则它可能包含一些危险的字符,比如 ../。

1.4K20

异常1.异常简介2.捕获异常3.异常的传递4.抛出自定义的异常5.异常处理中抛出异常

异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 看如下示例: ? 运行结果: ?...说明: 打开一个不存在的文件123.txt,当找不到123.txt文件时,就会抛出给我们一个IOError类型的错误,No such file or directory:123.txt(没有123.txt...这样的文件或目录) 异常: 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常" 2.捕获异常 1.捕获异常try...except... ?...ArithmeticError              所有数值计算错误的基 FloatingPointError          浮点计算错误 OverflowError                ...解释器不是致命的) NameError                       未声明/初始化对象 (没有属性) UnboundLocalError           访问初始化的本地变量 ReferenceError

1.8K30

PHP 编码规范

此编码规范 是以 PSR-1 / PSR-2 / PSR-2扩展 为蓝本,并增加了相应的细节说明。 通则 基本编码 PHP代码必须使用 长标签 或 短输出标签;一定不可使用其它自定义标签。...名规则 一个完整的名需具有以下结构: \(\)*\ 完整的名必须要有一个顶级命名空间,被称为 "vendor namespace"; 完整的名可以有一个或多个子命名空间...命名必须 遵循 StudlyCaps 大写开头的驼峰命名规范。...名自动加载规则 当根据完整的名载入相应的文件 完整的名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为“命名空间前缀”,其必须与至少一个“文件基目录”相对应; 紧接命名空间前缀后的子命名空间必须与相应的...”文件基目录“相匹配,其中的命名空间分隔符将作为目录分隔符。

3.6K20

获取 NodeJS 程序退出码

如果由于错误情况需要终止 Node.js 进程,则抛出捕获错误并允许进程相应地终止比调用 process.exit() 更安全,比如: import process from 'process';...在其他情况下使用以下状态代码: 1 捕获致命异常:存在捕获的异常,并且其没有被域或 'uncaughtException' 事件句柄处理。...5 致命错误:V8 中存在不可恢复的致命错误。 通常将打印带有前缀 FATAL ERROR 的消息到标准错误。...6 非函数的内部异常句柄:存在捕获的异常,但内部致命异常句柄不知何故设置为非函数,无法调用。 7 内部异常句柄运行时失败:存在捕获的异常,并且内部致命异常句柄函数本身在尝试处理时抛出错误。...在以前版本的 NodeJS 中,退出码 8 有时表示捕获的异常。 9 无效参数:指定了未知选项,或者提供了需要值的选项而没有值。

3.4K10

小白必看:Python中json.load()和json.loads()方法有什么区别?傻傻分不清。

目录 1.从代码层面说,程序为什么会崩溃 1)读取赋值的变量 2)函数栈溢出 3)数组访问越界 4)指针的目标对象不可用 5)参数错误 6)ClassNotFoundException异常 7)捕获的异常...而出现空指针或者野指针,一般都是下面几种操作导致的: 1.指针赋值 2.free/delete释放了该对象 3.不恰当的指针强制类型转换 5)参数错误 一般为了保证参数合法,都会设置断言来保证只有参数合法的情况下...相同的代码,在本地运行没问题,在服务器上就找不到。后来改了下扫描的路径就可以了。 2.全名没写对,或者没导入这个。 3.纯粹的代码或者依赖管理问题。...补充: 首先,Java的错误在程序角度分为exception和error。 error:是代码错误,编译不通过,运行不起来。比如变量命名不规范,public名和文件名不一致等。...7)捕获的异常 8)内存泄漏 9)服务器宕机了 可以凡尔赛一点回答,肯定就是代码写得不符合规范或者机器撑不住了。 机器很少硬件故障。而系统是程序,所以机器有问题,大概率是程序问题,导致各种异常。

1.3K30

Laravel Exceptions——异常与错误处理「建议收藏」

{main}() E:\sngrep\index.php:0 Try, throw 和 catch 要避免上面这个致命错误,可以使用 try catch 捕获掉。...set_exception_handler() 函数可设置处理所有捕获异常的用户定义函数。...,很多致命错误例如解析错误等都无法捕捉,但是这类致命错误发生时,PHP 会调用 register_shutdown_function 所注册的函数,如果结合函数 error_get_last,就会获取错误发生的信息...这些可被捕获的 Error 通常都是不会对程序造成致命伤害的 Error,例如函数不存在。...对于致命错误,例如 E_PARSE 解析错误,handleShutdown 将会启动,并且判断当前脚本结束是否是由于致命错误,如果是致命错误,将会将其转化为 FatalErrorException, 交给了

2.8K30

PSR-12 编码规范扩充

因此,PSR 力图通过一种更加现代的方式说明 PSR-2 的内容和新功能,并对 PSR-2 进行更正。...声明、命名空间以及导入 一个 PHP 文件的头部可能会包含多个块。如果包含多个块,则每个块都必须用空白行和其他块分隔,并且块内不能包含空白行。所有的块都必须按照下面的顺序排列,如果不存在该块则忽略。...命名空间声明语句。 一个或多个基于的 use 声明语句。 一个或多个基于方法的 use 声明语句。 一个或多个基于常量的 use 声明语句。 其余代码。...如果是这种情况的话,即时代码的其他部分包含有 PHP 结束符,然后再包含 HTML 和 PHP 代码,声明、命名空间和导入语句块也必须放在文件的顶部。 什么时候开始 <?...这将标准化流程结构,同时减少由于流程中添加新的内容而引入错误的可能性。 if, elseif, else if 结构如下。

749110
领券