首頁  >  文章  >  後端開發  >  PHP編碼開發規範的介紹(附範例)

PHP編碼開發規範的介紹(附範例)

不言
不言轉載
2019-04-01 10:29:102682瀏覽

這篇文章帶給大家的內容是關於PHP編碼開發規範的介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

這幾天看了一下阿里技術發布的一套Java開發規範《阿里巴巴Java開發手冊》,裡面寫了阿里內部的Java開發規範標準,寫的很好。這套Java統一規範標準將有助於提升產業編碼規範化水平,幫助產業人員提高開發品質與效率、大幅降低程式碼維護成本。

看完我去搜下了一些PHP的一些開發規範標準,其中了解到了PSR規範是PHP產業中常用的一套開發標準。感嘆自己學得那麼少,標準的規範這麼晚才發現。

其實對於新手或有幾年經驗的開發者來說,這些規範我們都要掌握的,很多時候我們做好這些規範,在協同開發中,能提高我們的開發品質和效率。

什麼是PSR?

PSR 是 PHP Standard Recommendations 的簡寫,由 PHP FIG 組織制定的 PHP 規範,是 PHP 開發的實務標準。 

PHP FIG目前已投票通過了 6 個標準,並且已經獲得大部分 PHP 框架的支持與認可。

其中已經通過的有:

  • PSR-1 基礎編碼規格
  • PSR-2 編碼風格規格
  • PSR-3 日誌介面規格
  • PSR-4 自動載入規格
  • PSR-6 快取介面規格
  • PSR-7 HTTP 訊息介面規格

*註:其中PSR-0已被棄用,PSR-5還在起草中,以後再補充

這裡先介紹PSR-1 基礎編碼規格

1、概覽

PHP程式碼檔案 必須 以 953d3453428f411e41cc62e53420574f 長標籤或 e001818591141260ad444db4de1b1edb 短輸出標籤;

#一定無法 使用其它自訂標籤。

2.2. 字元編碼

PHP代碼 必須 且只可使用 不帶BOM的UTF-8 編碼。 (這點很重要)

2.3. 副作用

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

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

「副作用」包含卻不限於:

  • 產生輸出
  • 直接的 require 或 include
  • #連線外部服務
  • 修改ini 設定
  • #拋出錯誤或例外
  • 修改全域或靜態變數
  • 讀取或寫入檔案等

#以下是一個 反例,一份包含「函數宣告」以及產生「副作用」的程式碼:

<?php
// 「副作用」:修改 ini 配置
ini_set(&#39;error_reporting&#39;, E_ALL);
// 「副作用」:引入文件
include "file.php";
// 「副作用」:生成输出
echo "<html>\n";
// 声明函数
function foo()
{
   // 函数主体部分
}

下面是一個範例,一份只包含宣告不產生「副作用」的程式碼:

<?php
// 声明函数
function foo()
{
   // 函数主体部分
}
// 条件声明 **不** 属于「副作用」
if (! function_exists(&#39;bar&#39;)) {
   function bar()
   {
       // 函数主体部分
   }
}

3. 命名空間與類別

命名空間以及類別的命名必須遵循[PSR-4]()。

根據規範,每個類別都獨立為一個文件,且命名空間至少有一個層次:頂級的組織名稱(vendor name)。

類別的命名 必須 遵循 StudlyCaps 大寫開頭的駝峰命名規格。

PHP 5.3 及以後版本的程式碼 必須 使用正式的命名空間。

例如:

<?php
// PHP 5.3及以后版本的写法
namespace Vendor\Model;
class Foo
{
}

5.2.x 及之前的版本 应该 使用伪命名空间的写法,约定俗成使用顶级的组织名称(vendor name)如 Vendor_ 为类前缀。

<?php
// 5.2.x及之前版本的写法
class Vendor_Model_Foo
{
}

4. 类的常量、属性和方法

此处的「类」指代所有的类、接口以及可复用代码块(traits)。

4.1. 常量

类的常量中所有字母都 必须 大写,词间以下划线分隔。

参照以下代码:

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

4.2. 属性

类的属性命名 可以 遵循:

  • 大写开头的驼峰式 ($StudlyCaps)
  • 小写开头的驼峰式 ($camelCase)
  • 下划线分隔式 ($under_score)

本规范不做强制要求,但无论遵循哪种命名方式,都 应该 在一定的范围内保持一致。这个范围可以是整个团队、整个包、整个类或整个方法。

4.3. 方法

方法名称 必须 符合 camelCase() 式的小写开头驼峰命名规范。

【相关推荐:PHP视频教程

以上是PHP編碼開發規範的介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除