PSR文档总结

作者: PHP程序媛 | 来源:发表于2019-08-20 14:30 被阅读2次

    PSR-1 基础编码规范

    1、类的命名必须遵循大写开头的驼峰命名规范(StudyCaps)

    2、方法命名必须遵循小写开头的驼峰命名规范(camelCase)

    3、类中的常量所有字母必须大写,单词间用下划线分割(const PLATFORM_WECHAT = 9)

    4、类中的属性名可遵循:大写开头驼峰、小写开头驼峰、下划线分割模式;无论使用那种方式,应该在一定范围内保持统一

    5、命名空间及类必须符合psr-4自动加载规范

    PSR-2 编码风格规范

    文件

    1、所有PHP文件必须以一个空行作为结束

    2、纯PHP代码文件必须省略最后的结束标签 "?>"

    1、每行不该多余80个字符,多余80个字符应该折成多行;行的长度不该有硬性限制,软性限制应必须限制在120个字符以内

    2、非空行后一定不可有多余的空格符

    3、每行不能存在多条语句

    关键字

    PHP所有关键字必须小写,常量 true、false、null 也必须全部小写

    namespace及use声明

    namespace声明后必须有一个空行

    所有use声明必须放在namespace声明之后

    use声明后必须有一个空行

    例:

    <?php

    namespace wby\test;

    use wby\Service\test;

    use log;

    class newOrder

    {

    }

    方法

    方法名称后不能有空格

    开始花括号和结束花括号都必须独占一行

    方法参数左括号后面和右括号前面不能有空格

    方法参数中逗号后面要有一个空格

    有默认值的参数,必须放到参数列表的末尾

    参数列表可以分成多行,这样每个参数必须单独成一行,而且结束括号和方法开始的花括号必须写在同一行,中间用一个空格分隔,如下所示:

    <?php

    namespace Vendor\Package;

    class ClassName

    {

         public function aVeryLongMethodName(

             ClassTypeHint $arg1,

             &$arg2,

             array $arg3 = []

         ) {

             // 方法的内容

         }

      }

    abstract、final 和 static

    需添加 abstract \ final 声明时,必须写在访问修饰符前,而static 必须写在其后,如

    abstract public static function();

     final public static function test()

    {

    }

    控制结构

    应该使用关键字 elseif 代替 else if, 以使得所有关键字都像是单独的一个词

    switch case 语句中,如果存在非空的case直穿语句,主体里必须有类似 “//no break” 的注释

    psr-4 自动加载规范

    1、完整的类名需具备的结构

    完整的类名必须有一个顶级命名空间,被成为“vendor namespace”

    完整的类名可以有一个或多个子命名空间

    完整的类名必须有一个最终的类名

    完整类名中任一部分的下划线都是没有特殊含义的

    完整类名可以由任意大小写字母组成

    所有类名必须是大小写敏感的

    2、当根据完整的类名载入相应的文件

    完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为「命名空间前缀」,其必须与至少一个「文件基目录」相对应;

    紧接命名空间前缀后的子命名空间必须与相应的「文件基目录」相匹配,其中的命名空间分隔符将作为目录分隔符。

    末尾的类名必须与对应的以.php为后缀的文件同名。

    自动加载器(autoloader)的实现一定不可抛出异常、一定不可触发任一级别的错误信息以及不应该有返回值。

    相关文章

      网友评论

        本文标题:PSR文档总结

        本文链接:https://www.haomeiwen.com/subject/aylpsctx.html