美文网首页
PHP PSR-2 Coding Style Guide

PHP PSR-2 Coding Style Guide

作者: 观星汉 | 来源:发表于2019-01-11 15:31 被阅读0次

    PHP 代码风格指南, 遵守 PSR-2 标准编写的代码会显得非常优雅. 别人在阅读你的代码的时候会赏心悦目.

    1: 规则总览

    1. 代码规则遵守 PSR-1.
    2. 代码缩进使用4个空格. 不是使用 tab缩进.
    3. 一行代码不要超过 80 个字符, 超过的需要设置换行.
    4. namespace 声明语句后需要保留一个空行. 使用 use 声明代码块后后面也需要留一个空行.
    5. 定义 class 后的 花括号 { 和结束 class 声明的 } 都单独使用一行. 不要把 {类名 同一行.
    6. 定义 method 的时候, 开始和结束的花括号 { } 也都独占一行. 和规则5一样.
    7. abstract, final 关键字需要放在可见性声明前面, static关键字放在可见性声明后面.
    8. 控制结构中关键字后需要留一个空格, 函数调用是不能留空格.
    9. 控制结构代码块的开始的花括号{需要和控制块开始在同一行. 结束的花括号}需要在单独一行.
    10. 左括号(控制开始)后面不要留空格, 右括号(控制结束)前不要留空格.

    2: 规则详解

    2.1: 关于PHP文件
    • PHP代码行结尾使用 Unix 结尾符, \n, Windows 系统使用 \r\n 作为行结尾.
    • 每个PHP文件后都需要留一行空行.
    • 纯PHP文件后不需要使用 ?> 声明结束.

    2.2: 关于每行代码
    • 每行代码不要超过80个字符, 超过了采取多行的编写方式.
    • 如果当行代码已经完成功能. 行后面不要留空格.
    • 可以适当的使用空行保持代码的阅读性.
    • 一行代码不要完成多个功能. 每行代码干一个步骤.

    2.3: 关于PHP的关键字
    • PHP的关键字, true, false, null 使用小写.

    2.4: 关于 NamespaceUse 声明.
    • namespace 声明后要留一空行.
    • use 声明要放在 namespace 声明后.
    • use 声明每行都要以 use 开始.
    • use 声明块结束后要留一空行.
    • 简单的代码示例:
    <?php
    namespace Vendor\Package;
    
    use FooClass;
    use BarClass as Bar;
    use OtherVendor\OtherPackage\BazClass;
    
    // ... additional PHP code ...
    

    2.5: 关于类 Classes
    • 代码风格适用于classes, interfaces, traits.
    • 关键字 extends, implements 需要和类名定义在同一行.
    • 开始 {} 独占一行.
    <?php
    namespace Vendor\Package;
    
    use FooClass;
    use BarClass as Bar;
    use OtherVendor\OtherPackage\BazClass;
    
    class ClassName extends ParentClass implements \ArrayAccess, \Countable
    {
        // constants, properties, methods
    }
    
    • 如果 implements 比较多. 可以使用多行声明. 每个被 implements 的接口都单独占一行.
    <?php
    namespace Vendor\Package;
    
    use FooClass;
    use BarClass as Bar;
    use OtherVendor\OtherPackage\BazClass;
    
    class ClassName extends ParentClass implements 
        \ArrayAccess, 
        \Countable,
        \Serializable
    {
        // constants, properties, methods
    }
    

    2.6: 关于类属性: Properties
    • 所有的类属性都需要带上 可见性声明(public, protected, private) 等.
    • 类属性名不能使用 var.
    • 每行不要定义多个类属性.
    • 不要用什么_给属性名做前缀来区分是私有属性或者其他用途.
    <?php
    namespace Vendor\Package;
    
    class ClassName
    {
        public $foo = null;
    }
    

    2.7: 类方法: Methods
    • 所有方法都需要带可见性声明
    • 方法名前面不要用统一的前缀来区分私有或者受保护的方法.
    • 方法名后不要留空格, 要直接跟对括号, 方法的花括号都需要在独立的行. 左对括号不能留空格, 右对括号不要留空格.
    • 方法中的参数: 参数后的逗号,前不要留空格, 逗号,后面留一个空格. 带默认值的参数放到最后.
    <?php
    namespace Vendor\Package;
    
    class ClassName
    {
        public function fooBarBaz($arg1, &$arg2, $arg3 = [])
        {
            // method body
        }
    }
    
    • 多参数的时候需要把参数分成多行声明, 每行只放一个参数, 并且进行缩进. 括号要另起一行.
    <?php
    namespace Vendor\Package;
    
    class ClassName
    {
        public function aVeryLongMethodName(
            ClassTypeHint $arg1,
            &$arg2,
            array $arg3 = []
        ) {
            // method body
        }
    }
    

    2.8: abstract, final, static
    • abstract, final 关键字需要放在可见性声明前面, static关键字放在可见性声明后面.
    <?php
    namespace Vendor\Package;
    
    abstract class ClassName
    {
        protected static $foo;
    
        abstract protected function zim();
    
        final public static function bar()
        {
            // method body
        }
    }
    

    //to be continue.

    相关文章

      网友评论

          本文标题:PHP PSR-2 Coding Style Guide

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