PSR-2:编码风格指导

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

 

1、概述

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

 

  • 1.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()
    {
        // 方法体
    }
}

2、常用

  • 2.1、基础编码标准

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

  • 2.2、文件

        所有的PHP文件都必须使用Unix格式换行符。

        所有的PHP文件必须以一个空行结束。

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

  • 2.3、行

        行不可以有硬限制。

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

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

        非空的行,行尾不可以跟空格。

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

        每一行不可以多于一个声明。

  • 2.4、缩进

        缩进必须使用4个空格,不可以使用tab作为缩进。

  • 2.5、关键词和 True/False/Null

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

3、命名空间和 Use 声明

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

        所有的 use 声明,必须跟随在 namespace 声明之后。

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

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

        例如:

<?php
namespace Vendor\Package;

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

// ... 其余代码 ...

4、类、属性和方法

        “类”指类、接口、trailts。

  • 4.1、扩展和接口

        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.2、属性

        所有的属性都必须声明可见性。

        关键词 var 不可以用于属性声明。

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

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

<?php
namespace Vendor\Package;

class ClassName
{
    public $foo = null;
}
  • 4.3、方法

        所有的方法都必须声明可见性。

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

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

<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz($arg1, &$arg2, $arg3 = [])
    {
        // 方法体
    }
}
  • 4.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.5、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.6、方法和函数调用

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

        圆括号之后也不可以有空格。

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

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

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

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

<?php
$foo->bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);

 

转载于:https://my.oschina.net/u/877598/blog/918292

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值