Heim  >  Artikel  >  Backend-Entwicklung  >  PSR-Spezifikation der PHP-Spezifikation

PSR-Spezifikation der PHP-Spezifikation

不言
不言Original
2018-04-26 14:42:313705Durchsuche

Dieser Artikel stellt die PSR-Spezifikation in der PHP-Spezifikation vor. Jetzt können interessierte Freunde einen Blick darauf werfen.

Referenz: http://psr.phphub.org/

PSR ist kein offizieller PHP-Standard , sondern eine Reihe von Standards, die aus bekannten PHP-Projekten wie Zend und Symfony2 extrahiert wurden. Derzeit gibt es mehr und mehr Weitere Gemeinschaftsprojekte schließen sich diesem Standard an und befolgen ihn. <br>

<br>

<br>

  • PSR- 0 Automatisches Laden 2 Codestil

  • PSR-3-Protokollschnittstelle

  • PSR-4 Wie um Dateien anzugeben Pfad zum automatischen Laden der Klassendefinition

  • PSR-1 Basic Code-Spezifikation

Diese Spezifikation legt Standards für die Grundelemente des Codes fest, um ein hohes Technologieniveau im gemeinsam genutzten PHPCode sicherzustellen Interoperabilität.

Datei·  PHP

Codedateien

müssen

in <span sein style="color:#858080;background:#F9FAFA;"><?php<span style="color:#7D8688;"> oder <span style ="color:#858080;background:#F9FAFA;"><?=</span> Tag beginnt; <span style="color:#858080;background:#F9FAFA;"><?php</span> · PHP<span style="color:#858080;background:#F9FAFA;"><?=</span>Codedatei

Erforderlich

Mit <span style="color:#858080;background:#F9FAFA;">ohne <span style="color:#7D8688;"><span style="color :#858080;background:#F9FAFA;">Stückliste </span><span style="color:#858080;background:#F9FAFA;"><strong> < span style="color:#858080;background:#F9FAFA;"> UTF-8<span style="color:#7D8688;"> Kodierung <span style="color:#858080;background:#F9FAFA;">不带</span>· <span style="color:#858080;background:#F9FAFA;"> BOM </span><span style="color:#858080;background:#F9FAFA;">的</span>PHP<span style="color:#858080;background:#F9FAFA;"> UTF-8</span>Im Code sollte

sein

Definieren Sie nur Klassen, Funktionen, Konstanten usw. deklarieren Sie , sonst erzeugen Sie <span style ="color:#FF0000;background:#F9FAFA;">Nebeneffekte<span style="color:#7D8688;"> Vorgänge (z. B. Generieren einer Dateiausgabe und Modifikation .ini Konfigurationsdatei usw.), Sie können nur eine der beiden auswählen <span style="color:#FF0000;background:#F9FAFA;">副作用</span> Namespaces und Klassen

· Klassenbenennung muss folgen <code><span style="color:#858080;background:#F9FAFA;">StudlyCaps</span>StudlyCaps Kamelschrift in GroßbuchstabenNamenskonvention;

· Jede Klasse ist eine unabhängige Datei, und der Namespace hat mindestens eine Ebene: den Organisationsnamen der obersten Ebene (Anbietername)

  • Klassenattribut: Kleinbuchstaben-Startkamelbuchstaben $ studlyCaps

  • Klassenmethode: Kleinbuchstabe, beginnender Kamelfall

Konstante

·     Konstanten in einer Klasse haben alle Buchstaben müssen in Großbuchstaben geschrieben sein, mit Unterstrichen, die Wörter trennen; >

  • Methodenname

    muss dem Format <strong>camelCase</strong> entsprechen, beginnend mit der Benennungskonvention für Kleinbuchstaben in Camel Case. <span style="color:#858080;background:#F9FAFA;">camelCase</span>

PSR-2-Codierungsstilspezifikation

Einrückung

· Code Sie muss unter Verwendung von 4 Leerzeichen anstelle von „Tabulatortasten “ verwenden. einrücken.

Zeilen

  • Die Anzahl der Zeichen pro Zeile sollte sanft beibehalten werden bei 80 Innerhalb von dürfen es nicht mehr als 120 sein, es darf aber keine feste Grenze geben.

  • Alle PHP-Dateienmüssenmit einer Leerzeile beginnen Als Abschluss.

  • Jede Zeile darf nicht mehr als eine Aussage enthalten

  • Eine Leerzeile muss nach jeder Namespace--Namespace-Deklaration und use -Deklarationsblock eingefügt werden.

  • Die öffnende Klammer ({) der Klasse muss nach der Funktionsdeklaration geschrieben werden In einer eigenen Zeile muss die schließende geschweifte Klammer (}) auch nach dem Funktionskörper in einer eigenen Zeile geschrieben werden.

  • Die öffnende Klammer ({) der Methode muss nach der Funktionsdeklaration in einer eigenen Zeile geschrieben werden und die schließende Klammer. Die Klammern (}) müssen auch nach dem Funktionskörper in einer eigenen Zeile geschrieben werden.

  • Die öffnende Klammer ({) der Kontrollstruktur muss in derselben Zeile geschrieben werden als Deklaration und die schließende geschweifte Klammer (}) muss nach dem Textkörper in einer eigenen Zeile geschrieben werden.

Modifikator

  • Attribute und Methoden der Klasse müssen Zugriffsmodifikatoren hinzufügen (private, ). protected und public), abstract und final müssen vor dem Zugriffsmodifikator deklariert werden, während static muss nach dem Zugriffsmodifikator deklariert werden.

Raum

  • KlassenmethodenparameterNach jedem Komma und dem Komma muss ein Leerzeichen stehen Vor

  • dürfen keine Leerzeichen stehen. Nach der öffnenden linken Klammer und vor der schließenden rechten Klammer der Kontrollstruktur dürfen keine Leerzeichen stehen .

Schlüsselwörter

·  Kontrollstruktur Da Nach dem Schlüsselwort muss ein Leerzeichen stehen, und beim Aufruf einer Methode oder Funktion darf kein enthalten.

  • Alle PHP-Schlüsselwörter müssen ausschließlich Kleinbuchstaben sein, und die Konstanten true, false und null müssen ebenfalls ausschließlich Kleinbuchstaben sein.

PSR-3-Protokollschnittstellenspezifikation

<code><span style="color:#858080;background:#F9FAFA;">LoggerInterface</span>LoggerInterface Externe Schnittstellendefinition Acht Methoden werden verwendet, um die acht Protokollebenen aufzuzeichnen, die in RFC 5424 definiert sind: debug , Info, Hinweis, Warnung, Fehler, kritisch, Alarm und Notfall .

Die neunte Methode —— log, ihr erster Parameter ist der aufgezeichnete Pegel. Diese Methode kann mit einer vordefinierten Ebenenkonstante als Parameter aufgerufen werden. muss sein, was den gleichen Effekt hat wie der direkte Aufruf der oben genannten acht Methoden. Wenn der übergebene Ebenenkonstantenparameter nicht vordefiniert ist, muss PsrLogInvalidArgumentException auslösen Typausnahme. Benutzer sollten nicht nicht unterstützte Pegelkonstanten verwenden, um diese Methode unter unsicheren Umständen aufzurufen.

/**

* Konstantendefinition auf Protokollebene

*/

KlasseLogLevel

{

 constNOTRUF ='Notfall';

 constALERT ='alert';

 constKRITISCH ='kritisch';>

 constERROR ='error';

constWARNUNG ='Warnung';

constHINWEIS = 'notice';

 constINFO ='info';

 constDEBUG ='debug';

}

PSR-4 Autoloading-Spezifikation

Ähnlich dem folgenden Beispiel: ()*

1. Vollständig kompatible Klassennamen müssen einen Namensraum der obersten Ebene haben (Anbietername)

2. Vollständig kompatible Klassennamen können mehrere Unternamensräume haben

3 Kompatible Klassennamen sollten einen abschließenden Klassennamen haben

4 Unterstriche haben in vollständig kompatiblen Klassennamen keine besondere Bedeutung

5. Buchstaben können in vollständig kompatiblen Klassennamen eine beliebige Kombination aus Groß- und Kleinschreibung sein

6. Alle Klassennamen müssen unter Berücksichtigung der Groß- und Kleinschreibung zitiert werden

7 > Der Name der Terminierungsklasse entspricht einer Datei mit der Endung .php . Der Dateiname muss mit der Groß-/Kleinschreibung des Terminierungsklassennamens übereinstimmen

Einige gängige Anpassungsspezifikationen

Kontrollschicht

1. Es erscheint keine SQL-Anweisung (SQL wird in die Modellebene gekapselt und dann als Methode aufgerufen)

2. SQL-Anweisungen, 3 oder mehr Zeilen logischer Code, Leerzeilen

3. Keine Leerzeilen zwischen kontextbezogenen Funktionen oder Methoden

4. Bool verwendet if (true === $name) die Form

5. Verwenden Sie doppelte Anführungszeichen, um Variablen zu verknüpfen

6. Achten Sie auf implizite Konvertierungen

7. Bei der Verwendung globaler Variablen müssen Sie deren Bedeutung kommentieren. Der Wertebereich ist

/**

* Allgemeine Beschreibung globaler Variablen * Globaler STATUS_CODE<br> * 0 - ERFOLGREICH * 2 - FEHLER<br>*/<br>STATUS_CODE<br><br><br>

8. Der Funktionsheader hat die folgende Anmerkung:

/*****************************************************<br>Funktion: // Chinesischer Name der Funktion<br>Beschreibung: // Beschreibung der Funktionsfunktionen, Leistung usw.<br>Aufrufe: // Liste der von dieser Funktion aufgerufenen Funktionen <br>Aufgerufen von: // Liste der Funktionen, die diese Funktion aufrufen <br>Zugriff auf die Tabelle: // Die Tabelle, auf die zugegriffen wird (dies gilt nur für Programme mit Datenbankoperationen) <br>Aktualisierte Tabelle: // Die Tabelle, die geändert wird ( Dies gilt nur für Programme, die Datenbankoperationen beinhalten. Programm zum Betrieb der Datenbank) <br>Eingabe:                // Beschreibung des Eingabeparameters, einschließlich der Rolle jedes Parameters, der Wertbeschreibung und der Beziehung zwischen Parametern. <br>Ausgabe:              // Beschreibung der Ausgabeparameter. <br>Rückgabe:                                                                                                                                                                                                                                   **************************/<br><br>

9. Notizen Leerzeilen zwischen

// Code eins Kommentare<br>Programmcode eins <br><br> // Code zwei Kommentare<br>Programmcode zwei

10. Datei-Header-Kommentare

/**************************************************** * ********Copyright (C), 1988-1999, Huawei Tech Co., Ltd. // <br>CopyrightDateiname: test.cpp DateinameAutor:                                                                                                                                                                                                                                                          // Hauptfunktionen und ihre FunktionenGeschichte:                                                                                                                                                                                                       1.0 init<br>*************** **************** ********************************/<br><br><br><br> <br><br><br><br>11. Der Fallsprung der switch-Anweisung erfordert Kommentare <br>

12. Benennung markierter Variablen:

temp kann als tmp ;<br>Flag abgekürzt werden kann als flg abgekürzt werden ;<br>statistic kann als stat ;<br>Inkrement kann als inc ;<br>Nachricht Kann als msg abgekürzt werden ;

13 Präfix der Schnittstelle

hinzufügen / Anfang entfernen / Ende erstellen / zerstörenEinfügen <br>/erste / letzte / Veröffentlichung löschen inkrementieren <br>/dekrementieren / gethinzufügen <br> /Sperre löschen / Aufschließen öffnen / schließenmin <br>/max alt / neu                                                                                 🎜>Ziel anzeigen / AusblendenSenden <br>/Quelle empfangen / ZielSchnitt / nach oben einfügen <br>/ nach unten <br>14. Versuchen Sie, Konstanten für Statuscodes anstelle von schwer verständlichen Zahlen zu verwenden

sollte in die folgende Form geändert werden. <br>#defineTRUNK_IDLE 0<br>#define TRUNK_BUSY 1<br> <br>if (Trunk[index].trunk_state == TRUNK_IDLE)<br>{<br> Trunk [index].trunk_state = TRUNK_BUSY;<br> ... //Programmcode<br>}

15. Klassendatei Namen verwenden erster Großbuchstabe Kamel , Gewöhnliche Dateien werden mit Unterstrichen

benannt. 16. Variablen in der Konfiguration werden mit Unterstrichen

1. 变量自增自减写到表达式前面: --e >= $name
2. 程序顺序应该遵循:参数定义代码->判断逻辑代码->业务逻辑代码
3. 大的数据使用引用
4. 为逻辑代码里每个复杂度高/重复度高的代码添加注释
5. 尽量不为简短代码引入新的变量,减少变量污染
<br>

1, wenn Sie die Klassenmethode als statisch definieren können , versuchen Sie es als statisch zu definieren, seine Geschwindigkeit wird sich um fast erhöhen 4 mal.

2, Die Geschwindigkeit von $row['id'] beträgt $row[id]7 mal.

3, echo ist schneller als print und verwenden Sie echo(Übersetzungshinweis: bezieht sich auf die Verwendung von Kommas anstelle von Punkten ) anstelle von Zeichenfolgenverkettung, wie z. B. echo $str1 ,$str2.

4, Ausführen von for Bestimmen Sie die maximale Anzahl von Schleifen vor der Schleife. Am besten verwenden Sie foreach stattdessen.

5 Heben Sie die Registrierung nicht verwendeter Variablen, insbesondere großer Arrays, auf, um Speicher freizugeben.

6, vermeiden Sie die Verwendung von __get, __set, __autoload .

7, require_once() ist teuer.

8, Versuchen Sie, beim Einschließen von -Dateien absolute Pfade zu verwenden, da dadurch die Notwendigkeit von PHP to go Die Geschwindigkeit beim Auffinden von Dateien in include_path wird das Parsen des Betriebssystempfads weniger Zeit in Anspruch nehmen.

9, wenn Sie wissen möchten, dass das Skript mit der Ausführung beginnt (Anmerkung: Der Server empfängt die Client-Anfrage), ist es besser, $_SERVER['REQUEST_TIME'] zu verwenden als time().

10, Funktionen ersetzen reguläre Ausdrücke, um dieselbe Funktion zu vervollständigen.

11, Die Funktion str_replace ist schneller als die Funktion preg_replace, str ist die vierte der Funktion str_replace Funktionszeiten.

12, wenn eine String-Ersetzungsfunktion Arrays oder Zeichen akzeptiert Parameter und die Länge des Parameters nicht zu lang ist, können Sie erwägen, einen zusätzlichen Ersatzcode zu schreiben, sodass jeder übergebene Parameter ein Zeichen ist, anstatt nur eine Codezeile zu schreiben, um ein Array als Parameter für Abfrage und zu akzeptieren Ersatz.

13, verwenden Sie die Select Branch-Anweisung (Übersetzung: das heißt, Wechselfall) ist einfacher zu verwenden. Mehrere if, else if Aussage.

14, verwenden Sie @Das Blockieren von Fehlermeldungen ist sehr ineffizient, äußerst ineffizient.

15, geöffnet mod_deflate von >Apache kann die Browsing-Geschwindigkeit von Webseiten verbessern .

16 Die Datenbankverbindung sollte geschlossen werden, wenn die Verwendung beendet ist. Fehlermeldungen sind teuer.

18, Vermeiden Sie

Inkrementierung

global Variable Verwandte Empfehlungen: PSR-4 über PHP-Spezifikationen Über Lei Fengs handgeschriebene Zeitung Über das Frühlingsfest Handgeschriebene Zeitung über das Frühlingsfest PHP-Spezifikation PSR-1 PHP-Sprache PHP-Handbuch PHP-Entwickler

Das obige ist der detaillierte Inhalt vonPSR-Spezifikation der PHP-Spezifikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn