PHP程式設計風格的基本規範
由於PHP的彈性,很多人寫起程式碼來也不講求一個好的程式碼規範,使得本來就靈活的PHP程式碼看起來很亂,其實PSR規範中的PSR-1和PSR-2已經定義了PHP編碼中的一些規範,只要我們好好遵守這些規範,即使是使用彈性的腳本語言,也能寫出非常漂亮工整的程式碼。首先我們來看一下已經通過的PSR規範,然後大致講解PSR-1和PSR-2規範的一些具體要求。
已通過的PSR
PSR-1基礎編碼規格
( 1)開閉標籤
首先,PHP程式碼必須以
(2)副作用
PHP檔案要麼聲明類別、介面、函數等,要麼執行邏輯操作(如讀寫檔案或向瀏覽器發送輸出),但不應該同時兼具兩者。
(3)命名
類別的命名必須遵守大寫開頭的駝峰式命名規範。換言之,類別名稱應以大寫字母開頭。屬性的命名方式沒有強制要求,但應該保持一致。方法名稱必須符合小寫開頭的駝峰式命名規範。類別常數中的所有字母必須大寫,單字之間以以下方式劃線分隔。
相關推薦:《PHP知識》
#PSR-2編碼風格規格
(1)PSR -1要求PHP程式碼以標籤結束,而應該以一個空白行結束。
(2)namespace宣告後應該插入一個空白行,use宣告語句區塊後面也應該要有一個空白行。不要在同一行程式碼中進行多次use聲明。
(3)類別的開始和結束
class關鍵字、類別名,以及extends和implements關鍵字必須在同一行。如果一個類別實作了多個接口,那麼這些接口名可以在類別聲明的同一行中,也可以各佔一行。如果選擇將這些介面名稱放在多行中,那麼第一個介面名稱必須自成一行,而不是跟在implements關鍵字後面。類別的開始花括號({)應該寫在函數宣告後自成一行,結束花括號(})也應該寫在類別後面自成一行。也就是說,類別聲明看起來如下所示
class EarthGame extends Game implements Playable, Savable { //类体 }
也可以將類別名稱與類別聲明放在同一行中。
class EarthGame extends Game implements Playble, Savable { //类体 }
(4)屬性宣告
每個屬性都必須有存取修飾符(public、private或protected)。不行使用關鍵字var聲明屬性。 PSR-1中已經涵蓋了屬性名的規格:可以使用底線、小寫駝峰式命名或大寫駝峰式命名方式,但應該保持一致。 (個人推薦屬性採用小寫式駝峰)
(5)方法的開始和結束
所有方法必須具有存取修飾符(public、private或protected)。存取修飾符必須在abstract或final之後,static之前。具有預設值得方法參數應該放在參數列表的末端。
·單行宣告
方法的開始花括號({)應該寫在方法名稱後自成一行,結束花括號(})也應該寫在方法體後自成一行(直接跟在方法程式碼之後)。方法參數清單不應該以空格開始或結束(即應該緊貼包裹著它們的圓括號)。對於每個參數,參數名稱(或預設值)後面應該有一個逗號,且逗號後面有一個空格。這聽起來似乎有些複雜,如下所示:
final public static function generateTile(int $diamondCount, bool $polluted = false) { //方法体 }
·多行宣告
如果方法有很多參數,那麼單行方法宣告是不實際的。此時我們可以分割參數列表,以便將每個參數(包括類型、參數變數、預設值和逗號)單獨放在縮排的一行中。這種情況下,結束圓括號應該放在參數清單後面一行中,並與方法宣告的起始位置對齊。開始花括號({)應該在同一行的結束圓括號之後,以空格分隔。方法體應該從新的一行開始。同樣,這聽起來似乎很複雜,以下範例應該能幫助你理解這條規定。
public function __construct( int $size, string $name, bool $warparound = false, bool $aliens = false ) { //方法体 }
(6)行與縮排
程式碼應該使用4個空格符來縮進,而不是使用製表符。我們可以檢查編輯器設置,將其設置為按下Tab鍵時使用4個空格而不是製表符。每行程式碼的長度不應該超過120個字元。
(7)方法與函數呼叫
方法名稱和開始圓括號之間不能有空格。方法呼叫中的參數清單的規則與方法宣告中的參數清單規則相同。換言之,對於單行調用,開始圓括號後或結束圓括號前不能有空格。每個參數之後要緊跟著一個逗號,下一個參數前面應該有一個空格。如果需要使用多行程式碼進行方法調用,那麼每個參數應該自成一行並縮進,而且結束圓括號也應該自成一行。
$earthGanme = new EarthGame( 5, 'earth', true, true ); $earthGame::generateTile(5, true);
(8)流程控制
#流程控制关键字(if、for、while等)后面必须紧跟一个空格。但是,开始圆括号后不能有空格。同样,结束圆括号前不能有空格。因此内容应该紧贴在括号内的。与类和(单行)函数声明相比,流程控制代码的开始花括号应该与结束圆括号在同一行。结束花括号应该自成一行。以下是一个简单的示例。
$title = []; for ($x = 0; $x < $diamondCount; $x++) { if ($polluted) { $title[] = new PollutionDecorator(new DiamondDecorator(new Plains())); } else { $title[] = new DiamondDecorator(new Plains()); } }
注意if和for之后的空格。for和if语句与圆括号在同一行,而且它们的结束圆括号后都有一个空格,然后是流程控制体的开始花括号。
以上是PHP程式設計風格的基本規範的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7
