1. 程式人生 > >PHP規範PSR1(基本編碼標準)介紹

PHP規範PSR1(基本編碼標準)介紹

標準的這一部分包括應該被認為是確保共享PHP程式碼之間高水平技術互操作性所需的標準編碼元素。

本文件中的關鍵詞“必須”,“必須”,“必需”,“應該”,“不應該”,“應該”,“不應該”,“推薦”,“可以”和“可選”按照RFC 2119中的描述進行解釋。

1、總覽

  • 檔案必須只使用<?php和<?=標籤。
  • 對於PHP程式碼,檔案必須僅使用沒有BOM的UTF-8。
  • 檔案應該宣告符號(類,函式,常量等)或引起副作用(例如生成輸出,更改.ini設定等),但不應該同時執行這兩種操作。
  • 名稱空間和類必須遵循“自動載入”PSR:[PSR-0,PSR-4]。
  • 類名必須在StudlyCaps中宣告。
  • 類常量必須以全部大寫形式用下劃線分隔符宣告。
  • 方法名必須在camelCase中宣告。

2、檔案

2.1。 PHP標籤
PHP程式碼必須使用long <?php?>標籤或short-echo <?=?>標籤;它不能使用其他標籤變體。

2.2。字元編碼
PHP程式碼必須只使用沒有BOM的UTF-8。

2.3。副作用
一個檔案應該宣告新的符號(類,函式,常量等)並且不會產生其他副作用,或者它應該執行帶副作用的邏輯,但是不應該同時執行這兩個操作。

短語“副作用”意味著僅僅通過包括檔案來執行與宣告類,函式,常數等不直接相關的邏輯。

“副作用”包括但不限於:生成輸出,明確使用require或include,連線到外部服務,修改ini設定,發出錯誤或異常,修改全域性或靜態變數,讀取或寫入檔案,以及等等。

以下是具有宣告和副作用的檔案示例;即,要避免的一個例子:

<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);

// side effect: loads a file
include "file.php";

// side effect: generates output
echo "<html>\n";

// declaration
function foo()
{
    // function body
}

以下示例是包含沒有副作用的宣告的檔案;即,模仿的例子:

<?php
// declaration
function foo()
{
    // function body
}

// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}

3、名稱空間和類名

名稱空間和類必須遵循“自動載入”PSR:[PSR-0,PSR-4]。

這意味著每個類本身都在一個檔案中,並且位於至少一個級別的名稱空間中:頂級供應商名稱。

類名必須在StudlyCaps中宣告。

為PHP 5.3編寫的程式碼,必須使用正式的名稱空間。

例如:

<?php
// PHP 5.3 and later:
namespace Vendor\Model;

class Foo
{
}

為5.2.x編寫的程式碼,在SHOULD之前應該在類名上使用Vendor_字首的偽名稱空間約定。

<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}

4,類常量,屬性和方法

術語“類”指的是所有類,介面和特徵。

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()中宣告。