PSR-1 基礎編碼規範

來源:互聯網
上載者:User

標籤:檔案   標記   PHP代碼   首碼   產生   修改   https   standard   函數   

  

基本代碼規範
RFC 2119中的  必須(MUST)  不可(MUST NOT)建議(SHOULD)不建議(SHOULD NOT)可以/可能(MAY)等關鍵詞將在本節用來做一些解釋性的描述。
1. 概述 
  • 源檔案必須只使用 <?php<?= 這兩種標籤。

  • 源檔案中php代碼的編碼格式 必須 只使用不帶字 節順序標記(BOM) 的 UTF-8

  • 一個源檔案建議只用來做聲明(類(class)函數(function)常量(constant)等)或者只用來做一些引起副作用的操作(例如:輸出資訊,修改.ini配置等),但不建議同時做這兩件事。

  • 命名空間(namespace)類(class) 必須遵守PSR-0標準。

  • 類名(class name) 必須使用駱駝式(StudlyCaps)寫法 (譯者註:駝峰式(cameCase)的一種變種,後文將直接用StudlyCaps表示)。

  • 類(class)中的常量必須只由大寫字母和底線(_)組成。

  • 方法名(method name) 必須使用駝峰式(cameCase)寫法(譯者註:後文將直接用camelCase表示)。

 2. 檔案  2.1. PHP標籤 

    PHP代碼必須只使用長標籤(<?php ?>)或者短輸出式標籤(<?= ?>);而不可使用其他標籤。

   2.2. 字元編碼 

    PHP代碼的編碼格式必須只使用不帶位元組順序標記(BOM)UTF-8

        2.3. 副作用 

    一個源檔案建議只用來做聲明(類(class)函數(function)常量(constant)等)或者只用來做一些引起副作用的操作(例如:輸出資訊,修改.ini配置等),但不建議同時做這兩件事。

 

    短語副作用(side effects)的意思是 在包含檔案時 所執行的邏輯與所聲明的類(class)函數(function)常量(constant)等沒有直接的關係。

 

    副作用(side effects)包含但不局限於:產生輸出,顯式地使用requireinclude,串連外部服務,修改ini配置,觸發錯誤或異常,修改全域或者靜態變數,讀取或修改檔案等等

 

    下面是一個既包含聲明又有副作用的樣本檔案;即應避免的例子:

 
<?php// 副作用:修改了ini配置ini_set(‘error_reporting‘, E_ALL);// 副作用:載入了檔案include "file.php";// 副作用:產生了輸出echo "<html>\n";// 聲明function foo(){    // 函數體}
 

下面是一個僅包含聲明的樣本檔案;即應提倡的例子:

 
<?php// 聲明function foo(){    // 函數體}// 條件式聲明不算做是副作用if (! function_exists(‘bar‘)) {    function bar()    {        // 函數體    }}
 3. 空間名(namespace)類名(class name)

  命名空間(namespace)類(class)必須遵守 PSR-0.

  這意味著一個源檔案中只能有一個類(class),並且每個類(class)至少要有一級空間名(namespace):即一個頂級的組織名(vendor name)

  類名(class name) 必須使用StudlyCaps寫法。

  PHP5.3之後的代碼必須使用正式的命名空間(namespace)
  例子:

<?php// PHP 5.3 及之後:namespace Vendor\Model;class Foo{}

  PHP5.2.x之前的代碼建議用偽命名空間Vendor_作為類名(class name)的首碼

 
<?php// PHP 5.2.x 及之前:class Vendor_Model_Foo{}
 4. 類的常量、屬性和方法

  術語類(class)指所有的類(class)介面(interface)特性(trait)

        4.1. 常量

    類常量必須只由大寫字母和底線(_)組成。 
    例子:

 
<?phpnamespace Vendor\Model;class Foo{    const VERSION = ‘1.0‘;    const DATE_APPROVED = ‘2012-06-01‘;}
   4.2. 屬性

    本指南中故意不對$StulyCaps$camelCase或者$unser_score中的某一種風格作精選,完全由讀者依據個人喜好決定屬性名稱的命名風格。

    但是不管你如何定義屬性名稱,建議在一個合理的範圍內保持一致。這個範圍可能是組織(vendor)層級的,包(package)層級的,類(class)層級的,或者方法(method)層級的。

  4.3. 方法

    方法名則必須使用camelCase()風格來聲明。

 

PSR-1 基礎編碼規範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.