PHP PSR-2 代碼風(fēng)格規(guī)范
Jul 23, 2016 am 08:54 AM
代碼風(fēng)格規(guī)范
本篇規(guī)范是 [PSR-1][] 基本代碼規(guī)范的繼承與擴(kuò)展。 本規(guī)范希望通過(guò)制定一系列規(guī)范化php代碼的規(guī)則,以減少在瀏覽不同作者的代碼時(shí),因代碼風(fēng)格的不同而造成不便。 當(dāng)多名程序員在多個(gè)項(xiàng)目中合作時(shí),就需要一個(gè)共同的編碼規(guī)范, 關(guān)鍵詞 “必須”("MUST")、“一定不可/一定不能”("MUST NOT")、“需要”("REQUIRED")、 概覽 代碼必須遵循 [PSR-1][] 中的編碼規(guī)范 。 代碼必須使用4個(gè)空格符而不是 tab鍵 進(jìn)行縮進(jìn)。 每行的字符數(shù)應(yīng)該軟性保持在80個(gè)之內(nèi), 理論上一定不可多于120個(gè), 但一定不能有硬性限制。 每個(gè) namespace 命名空間聲明語(yǔ)句和 use 聲明語(yǔ)句塊后面,必須插入一個(gè)空白行。 類(lèi)的開(kāi)始花括號(hào)({)必須寫(xiě)在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也必須寫(xiě)在函數(shù)主體后自成一行。 方法的開(kāi)始花括號(hào)({)必須寫(xiě)在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也必須寫(xiě)在函數(shù)主體后自成一行。 類(lèi)的屬性和方法必須添加訪(fǎng)問(wèn)修飾符(private、protected 以及 public), abstract 以及 final 必須聲明在訪(fǎng)問(wèn)修飾符之前,而 static 必須聲明在訪(fǎng)問(wèn)修飾符之后。 控制結(jié)構(gòu)的關(guān)鍵字后必須要有一個(gè)空格符,而調(diào)用方法或函數(shù)時(shí)則一定不能有。 控制結(jié)構(gòu)的開(kāi)始花括號(hào)({)必須寫(xiě)在聲明的同一行,而結(jié)束花括號(hào)(})必須寫(xiě)在主體后自成一行。 控制結(jié)構(gòu)的開(kāi)始左括號(hào)后和結(jié)束右括號(hào)前,都一定不能有空格符。 1.1. 例子以下例子程序簡(jiǎn)單地展示了以上大部分規(guī)范:
通則 2.1 基本編碼準(zhǔn)則 代碼必須符合 [PSR-1][] 中的所有規(guī)范。 2.2 文件所有PHP文件必須使用Unix LF (linefeed)作為行的結(jié)束符。 所有PHP文件必須以一個(gè)空白行作為結(jié)束。 純PHP代碼文件必須省略最后的 ?> 結(jié)束標(biāo)簽。 2.3. 行行的長(zhǎng)度一定不能有硬性的約束。 軟性的長(zhǎng)度約束一定要限制在120個(gè)字符以?xún)?nèi),若超過(guò)此長(zhǎng)度,帶代碼規(guī)范檢查的編輯器一定要發(fā)出警告,不過(guò)一定不可發(fā)出錯(cuò)誤提示。 每行不應(yīng)該多于80個(gè)字符,大于80字符的行應(yīng)該折成多行。 非空行后一定不能有多余的空格符。 空行可以使得閱讀代碼更加方便以及有助于代碼的分塊。 每行一定不能存在多于一條語(yǔ)句。 2.4. 縮進(jìn)代碼必須使用4個(gè)空格符的縮進(jìn),一定不能用 tab鍵 。 備注: 使用空格而不是tab鍵縮進(jìn)的好處在于, PHP所有 [關(guān)鍵字][]必須全部小寫(xiě)。 常量 true 、false 和 null 也必須全部小寫(xiě)。 namespace 以及 use 聲明 namespace 聲明后 必須 插入一個(gè)空白行。 所有 use 必須 在 namespace 后聲明。 每條 use 聲明語(yǔ)句 必須 只有一個(gè) use 關(guān)鍵詞。 use 聲明語(yǔ)句塊后 必須 要有一個(gè)空白行。 例如:
類(lèi)、屬性和方法 此處的“類(lèi)”泛指所有的class類(lèi)、接口以及traits可復(fù)用代碼塊。 4.1. 擴(kuò)展與繼承關(guān)鍵詞 extends 和 implements必須寫(xiě)在類(lèi)名稱(chēng)的同一行。 類(lèi)的開(kāi)始花括號(hào)必須獨(dú)占一行,結(jié)束花括號(hào)也必須在類(lèi)主體后獨(dú)占一行。
implements 的繼承列表也可以分成多行,這樣的話(huà),每個(gè)繼承接口名稱(chēng)都必須分開(kāi)獨(dú)立成行,包括第一個(gè)。
每個(gè)屬性都必須添加訪(fǎng)問(wèn)修飾符。 一定不可使用關(guān)鍵字 var 聲明一個(gè)屬性。 每條語(yǔ)句一定不可定義超過(guò)一個(gè)屬性。 不要使用下劃線(xiàn)作為前綴,來(lái)區(qū)分屬性是 protected 或 private。 以下是屬性聲明的一個(gè)范例:
所有方法都必須添加訪(fǎng)問(wèn)修飾符。 不要使用下劃線(xiàn)作為前綴,來(lái)區(qū)分方法是 protected 或 private。 方法名稱(chēng)后一定不能有空格符,其開(kāi)始花括號(hào)必須獨(dú)占一行,結(jié)束花括號(hào)也必須在方法主體后單獨(dú)成一行。參數(shù)左括號(hào)后和右括號(hào)前一定不能有空格。 一個(gè)標(biāo)準(zhǔn)的方法聲明可參照以下范例,留意其括號(hào)、逗號(hào)、空格以及花括號(hào)的位置。
參數(shù)列表中,每個(gè)逗號(hào)后面必須要有一個(gè)空格,而逗號(hào)前面一定不能有空格。 有默認(rèn)值的參數(shù),必須放到參數(shù)列表的末尾。
參數(shù)列表可以分列成多行,這樣,包括第一個(gè)參數(shù)在內(nèi)的每個(gè)參數(shù)都必須單獨(dú)成行。 拆分成多行的參數(shù)列表后,結(jié)束括號(hào)以及方法開(kāi)始花括號(hào) 必須 寫(xiě)在同一行,中間用一個(gè)空格分隔。
需要添加 abstract 或 final 聲明時(shí), 必須寫(xiě)在訪(fǎng)問(wèn)修飾符前,而 static 則必須寫(xiě)在其后。
方法及函數(shù)調(diào)用時(shí),方法名或函數(shù)名與參數(shù)左括號(hào)之間一定不能有空格,參數(shù)右括號(hào)前也 一定不能有空格。每個(gè)參數(shù)前一定不能有空格,但其后必須有一個(gè)空格。
參數(shù)可以分列成多行,此時(shí)包括第一個(gè)參數(shù)在內(nèi)的每個(gè)參數(shù)都必須單獨(dú)成行。
控制結(jié)構(gòu) 控制結(jié)構(gòu)的基本規(guī)范如下: 控制結(jié)構(gòu)關(guān)鍵詞后必須有一個(gè)空格。 左括號(hào) ( 后一定不能有空格。 右括號(hào) ) 前也一定不能有空格。 右括號(hào) ) 與開(kāi)始花括號(hào) { 間一定有一個(gè)空格。 結(jié)構(gòu)體主體一定要有一次縮進(jìn)。 結(jié)束花括號(hào) } 一定在結(jié)構(gòu)體主體后單獨(dú)成行。 每個(gè)結(jié)構(gòu)體的主體都必須被包含在成對(duì)的花括號(hào)之中, 標(biāo)準(zhǔn)的 if 結(jié)構(gòu)如下代碼所示,留意 括號(hào)、空格以及花括號(hào)的位置,
應(yīng)該使用關(guān)鍵詞 elseif 代替所有 else if ,以使得所有的控制關(guān)鍵字都像是單獨(dú)的一個(gè)詞。 5.2. switch 和 case標(biāo)準(zhǔn)的 switch 結(jié)構(gòu)如下代碼所示,留意括號(hào)、空格以及花括號(hào)的位置。
一個(gè)規(guī)范的 while 語(yǔ)句應(yīng)該如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。
標(biāo)準(zhǔn)的 do while 語(yǔ)句如下所示,同樣的,注意其 括號(hào)、空格以及花括號(hào)的位置。
標(biāo)準(zhǔn)的 for 語(yǔ)句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。
標(biāo)準(zhǔn)的 foreach 語(yǔ)句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。
標(biāo)準(zhǔn)的 try catch 語(yǔ)句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。
閉包 閉包聲明時(shí),關(guān)鍵詞 function 后以及關(guān)鍵詞 use 的前后都必須要有一個(gè)空格。 開(kāi)始花括號(hào)必須寫(xiě)在聲明的同一行,結(jié)束花括號(hào)必須緊跟主體結(jié)束的下一行。 參數(shù)列表和變量列表的左括號(hào)后以及右括號(hào)前,必須不能有空格。 參數(shù)和變量列表中,逗號(hào)前必須不能有空格,而逗號(hào)后必須要有空格。 閉包中有默認(rèn)值的參數(shù)必須放到列表的后面。 標(biāo)準(zhǔn)的閉包聲明語(yǔ)句如下所示,注意其 括號(hào)、逗號(hào)、空格以及花括號(hào)的位置。
參數(shù)列表以及變量列表可以分成多行,這樣,包括第一個(gè)在內(nèi)的每個(gè)參數(shù)或變量都必須單獨(dú)成行,而列表的右括號(hào)與閉包的開(kāi)始花括號(hào)必須放在同一行。 以下幾個(gè)例子,包含了參數(shù)和變量列表被分成多行的多情況。
注意,閉包被直接用作函數(shù)或方法調(diào)用的參數(shù)時(shí),以上規(guī)則仍然適用。
總結(jié) 以上規(guī)范難免有疏忽,其中包括但不僅限于: 全局變量和常量的定義 函數(shù)的定義 操作符和賦值 行內(nèi)對(duì)齊 注釋和文檔描述塊 類(lèi)名的前綴及后綴 最佳實(shí)踐 本規(guī)范之后的修訂與擴(kuò)展將彌補(bǔ)以上不足。 附錄 A. 問(wèn)卷調(diào)查為了編寫(xiě)本規(guī)范,小組制定了調(diào)查問(wèn)卷,用來(lái)統(tǒng)計(jì)各成員項(xiàng)目的共同規(guī)范。
indent_type: line_length_limit_soft: line_length_limit_hard: class_names: class_brace_line: constant_names: true_false_null: method_names: method_brace_line: control_brace_line: control_space_after: always_use_control_braces: else_elseif_line: case_break_indent_from_switch: function_space_after: closing_php_tag_required: line_endings: static_or_visibility_first: control_space_parens: blank_line_after_php: class_method_control_brace:
轉(zhuǎn)自Github(PizzaLiu) |

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren
