搜尋
首頁後端開發php教程PHP編碼開發規範的介紹(附範例)

這篇文章帶給大家的內容是關於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程式碼檔案 必須 以 

PHP程式碼檔案 必須 以 不帶BOM 的UTF-8 編碼;

PHP程式碼中 應該 只定義類別、函數、常數等聲明,或其他會產生 副作用 的操作(如:產生檔案輸出以及修改.ini 設定檔等),二者只能選其一;

命名空間以及類別 必須 符合PSR 的自動載入規格: [PSR-4]() 中的一個;

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

#類別中的常數所有字母都 大寫,字間以底線分隔;

方法名稱 必須 符合 camelCase 式的小寫開頭駝峰命名規格。

2. 檔案

2.1. PHP標籤

PHP程式碼 必須 使用  長標籤或 = ?> 短輸出標籤;

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

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中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中