PSR-2:编码风格指导

该指导是做为对PSR-1的扩展与拓宽。php

 

一、概述函数

  • 代码必须遵循“编码风格指导”PSR [PSR-1]。
  • 代码必须使用4个空格做为缩进,而不是使用tab缩进。
  • 不能硬性限制行的长度,软限制必须是120字符,行应当很少于80个字符。
  • namespace 声明以后,必须跟一个空白行。use 块声明以后,也必须跟一个空白行。
  • 类后的开花括号必须写在下一行,闭花括号也必须写在类体的下一行。
  • 类方法的开花括号、闭花括号必须写在下一行。
  • 所有属性和方法都必须声明可见性;abstractfinal 必须声明在可见性以前;static 必须声明在可见性以后。
  • 控制结构关键词以后必须跟随一个空格,方法和函数调用以后不能够跟随空格。
  • 控制结构的开花括号必须在统一行内,闭花括号写在主体的下一行。
  • 控制结构的开圆括号以后,闭花括号以前必定不能够跟随空格。

 

  • 1.一、示例

        下面的示例包含了一些相应的规则。编码

<?php
namespace Vendor\Package;

use FooInterface;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

class Foo extends Bar implements FooInterface
{
    public function sampleMethod($a, $b = null)
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // 方法体
    }
}

二、经常使用spa

  • 2.一、基础编码标准

        代码必须遵循PSR-1中的描述code

  • 2.二、文件

        全部的PHP文件都必须使用Unix格式换行符。接口

        全部的PHP文件必须以一个空行结束。io

        仅包含PHP代码的文件,末尾关闭标签 ?> 必须省略掉。table

  • 2.三、行

        行不能够有硬限制。function

        行的长度软限制为120个字符。class

        每行的长度不该该超过80个字符;超出的部分应当分割成多个不超出80字符的跟随行。

        非空的行,行尾不能够跟空格。

        添加空白行可能会加强可读性而且代表相关代码块。

        每一行不能够多于一个声明。

  • 2.四、缩进

        缩进必须使用4个空格,不能够使用tab做为缩进。

  • 2.五、关键词和 True/False/Null

        PHP关键词必定要小写。true , falsenull

三、命名空间和 Use 声明

        namespace 声明以后,必须跟随一个空行。

        全部的 use 声明,必须跟随在 namespace 声明以后。

        每一个声明都必须使用一个 use 关键词。

        use 块以后必须跟随一个空行。

        例如:

<?php
namespace Vendor\Package;

use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

// ... 其他代码 ...

四、类、属性和方法

        “类”指类、接口、trailts。

  • 4.一、扩展和接口

        extendsimplements 关键词必须和类名声明在同一行。

        类的开花括号必须跟随在它本身的行,闭花括号必须跟随在下一行。

<?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 的列表,可能会分割为跨越多行,每个跟随行缩进一次。若是这么作的话,列表中的第一个项必须在下一行,且每行只容许有一个接口。

<?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
}
  • 4.二、属性

        全部的属性都必须声明可见性。

        关键词 var 不能够用于属性声明。

        每一个表达式不能多于一个属性声明。

        不该该如下划线开头的方式,做为暗示该方法为私有或受保护的属性。

<?php
namespace Vendor\Package;

class ClassName
{
    public $foo = null;
}
  • 4.三、方法

        全部的方法都必须声明可见性。

        不该该如下划线开头的方式,做为暗示该方法为私有或受保护的方法。

        方法名的声明以后不能够有空格,括号与参数之间也不能够有空格。

<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz($arg1, &$arg2, $arg3 = [])
    {
        // 方法体
    }
}
  • 4.四、方法参数

        参数列表中,每一个逗号以前不能够有空格,以后必须有一个空格。

        含有默认值的参数,必须放在参数列表最后。

<?php
namespace Vendor\Package;

class ClassName
{
    public function foo($arg1, &$arg2, $arg3 = [])
    {
        // 函数体
    }
}

        参数列表也许会被拆分为多行,每个跟随行必须缩进一次。第一项必须放在下一行,且每行只容许一个参数。

        闭圆括号必需要和开花括号放在一块儿,且中间用一个空格分开。

<?php
namespace Vendor\Package;

class ClassName
{
    public function aVeryLongMethodName(
        ClassTypeHint $arg1,
        &$arg2,
        array $arg3 = []
    ) {
        // method body
    }
}
  • 4.五、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
    }
}
  • 4.六、方法和函数调用

        当调用方法或函数时,名称与圆括号之间不能够有空格。

        圆括号以后也不能够有空格。

        参数调用,逗号以前不能够有空格,以后必须有一个空格。

<?php
bar();
$foo->bar($arg1);
Foo::bar($arg2, $arg3);

        参数列表也许会被拆分为多行,每一个跟随行必须缩进一次。

        第一项必须在下一行中,每行必须只有一个参数。

<?php
$foo->bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);
相关文章
相关标签/搜索