PSR-1 基礎編碼規範

基本代碼規範

本篇規範制定了代碼基本元素的相關標準,以確保共享的 PHP 代碼間具備較高程度的技術互通性。php

本文件中的 必須不得須要不該應該不該該推薦可能 和 可選 等能願動詞按照 RFC 2119 中的描述進行解釋。html

 

1. 概覽

  • PHP 代碼文件 必須 以 <?php 或 <?= 標籤開始;git

  • PHP 代碼文件 必須 以 不帶 BOM 的 UTF-8 編碼;github

  • PHP 代碼中 應該 只定義類、函數、常量等聲明,或其餘會產生 反作用 的操做(如:生成文件輸出以及修改 .ini 配置文件等),兩者只能選其一;ide

  • 命名空間以及類 必須 符合 PSR 的自動加載規範: [PSR-0(已廢棄)或 PSR-4] 中的一個。函數

  • 類的命名 必須 遵循 StudlyCaps 大寫開頭的駝峯命名規範;ui

  • 類中的常量全部字母都 必須 大寫,單詞間用下劃線分隔;編碼

  • 方法名稱 必須 符合 camelCase 式的小寫開頭駝峯命名規範。spa

 

2. 文件

 

2.1. PHP 標籤

PHP 代碼 必須 使用 <?php ?> 長標籤 或 <?= ?> 短輸出標籤;
必定不可 使用其它自定義標籤。代碼規範

 

2.2. 字符集編碼

PHP 代碼 必須 且只可以使用 不帶 BOM 的 UTF-8 編碼。

 

2.3. 反作用

一份 PHP 文件中 應該 要不就只定義新的聲明,如類、函數或常量等不產生 反作用 的操做,要不就只書寫會產生 反作用 的邏輯操做,但 不應 同時具備二者。

「反作用」(side effects) 一詞的意思是,僅僅經過包含文件,不直接聲明類、函數和常量等,而執行的邏輯操做。

「反作用」包含卻不只限於:生成輸出,明確使用 require 或 include,鏈接到外部服務,修改 ini 設置,發出錯誤或異常,修改全局或靜態變量,讀取或寫入一個文件,等等。

如下是一個 反例,一份包含「函數聲明」以及產生「反作用」的代碼:

<?php // 「反作用」:修改 ini 配置 ini_set('error_reporting', E_ALL); // 「反作用」:引入文件 include "file.php"; // 「反作用」:生成輸出 echo "<html>\n"; // 聲明函數 function foo() { // function body }

下面是一個範例,一份只包含聲明不產生「反作用」的代碼:

<?php // 聲明函數 function foo() { // 函數主體部分 } // 條件聲明 **不** 屬於「反作用」 if (! function_exists('bar')) { function bar() { // 函數主體部分 } }
 

3. 命名空間和類名

命名空間和類名 必須 遵循『自動加載』規範: [PSR-0, PSR-4]。

這意味着每一個類都獨立爲一個文件,而且至少在一個層次的命名空間內,那就是:頂級組織名(vendor name)。

類名 必須 以相似 StudlyCaps 形式的大寫開頭的駝峯命名方式聲明。

PHP 5.3 及更高版本的代碼 必須 使用正式的命名空間。

舉個例子:

<?php
// PHP 5.3 及更高版本:
namespace Vendor\Model;

class Foo
{
}

PHP 5.2 及更低版本 應該 使用僞命名空間,約定俗成,以頂級組織名稱 Vendor_ 爲類名前綴:

<?php
// PHP 5.2.x 及更低版本:
class Vendor_Model_Foo
{
}
 

4. 類的常量、屬性和方法

此處的「類」指代全部的類、接口以及可複用代碼塊(traits)。

 

4.1. 常量

類的常量中全部字母都 必須 大寫,詞間如下劃線分隔。例如:

<?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; }
 

4.2. 屬性

類的屬性命名 能夠 遵循:

  • 大寫開頭的駝峯式 ($StudlyCaps)
  • 小寫開頭的駝峯式 ($camelCase)
  • 下劃線分隔式 ($under_score)

本規範不作強制要求,但不管遵循哪一種命名方式,都 應該 在必定的範圍內保持一致。這個範圍能夠是整個團隊、整個包、整個類或整個方法。

 

4.3. 方法

方法名稱 必須 符合 camelCase() 式的小寫開頭駝峯命名規範。

相關文章
相關標籤/搜索