PHP PSR-2 Coding Style Guide

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.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容