PSR
ist die Abkürzung für PHP Standard Recommendation. Eigentlich sollte es PSRs heißen, eine Reihe empfohlener Standards: Zu den derzeit angenommenen Spezifikationen gehören PSR-0 (Autoloading Standard), PSR-1 (Basic Coding Standard) und PSR-. 2 (Coding Style Guide), PSR-3 (Logger-Schnittstelle), PSR-4 (verbessertes automatisches Laden). Es handelt sich nicht um einen offiziellen PHP-Standard, sondern um eine Reihe von Standards, die aus bekannten PHP-Projekten wie Zend und Symfony2 extrahiert wurden. Derzeit sind immer mehr Community-Projekte als Mitglieder beigetreten und folgen diesem Standard.
PHP-FIG – PHP Framework Interoperability Group, ist eine Organisation, die PSR-Entwicklungsspezifikationen formuliert. Zu ihren Mitgliedern gehören viele bekannte PHP-Community-Projekte. Die Mitgliederliste finden Sie unten auf der offiziellen Website. Diese Mitglieder entwickeln Spezifikationen und setzen diese in ihren Projekten um.
Tatsächlich ist der Inhalt jeder PSR-Spezifikation sehr prägnant und klar, was viel besser ist als die Spezifikationen, die Dutzende von Seiten umfassen.
PSR-0 (Autoloading-Standard)
PSR-0 ist die automatische Klassenladespezifikation (Originaltext: offizielle Website, GitHub). Seit dem 21.10.2014 ist diese Spezifikation als veraltet markiert und durch PSR-4 ersetzt. Der Inhalt ist sehr prägnant.
Inhalt:
Vendor Name
>(<Namespace
>)*<Class Name
>“Vendor Name
Namespace- und Klassennamen können aus Groß- und Kleinbuchstaben bestehen, wobei bei Namespace- und Klassennamen die Groß-/Kleinschreibung beachtet werden muss, um die Kompatibilität mit mehreren Systemen sicherzustellenPSR-1 (Basic Coding Standard)
PSR-1 ist der grundlegende Codierungsstandard (Originaltext: offizielle Website, GitHub). Ist der Inhalt prägnant, einschließlich der Benennungsmethode für Klassendateien, Klassennamen und Klassenmethodennamen?
Inhalt:
Quelldateien dürfen nur die Tags verwenden
Das Codierungsformat des PHP-Codes in der Quelldatei darf nur UTF-8 ohne BOM verwenden
Es wird empfohlen, eine Quelldatei nur für Deklarationen (Klassen, Funktionen, Konstanten usw.) oder nur für Vorgänge zu verwenden, die Nebenwirkungen verursachen (z. B. Informationen ausgeben, INI-Konfigurationsdateien ändern usw.). aber es sollten nicht zwei Dinge gleichzeitig gemacht werden
Namespaces und Klassen müssen dem PSR-0-Standard entsprechen
Klassennamen müssen mit StudlyCaps geschrieben werden
Konstanten in einer Klasse dürfen nur aus Großbuchstaben und Unterstrichen (_) bestehen
Methodennamen müssen in cameCase geschrieben werden
PSR-2 (Coding Style Guide)
PSR-2 ist der Codierungsstilstandard (Originaltext: offizielle Website, GitHub). Der Inhalt ist etwas umfassender, aber immer noch relativ prägnant. Er basiert auf PSR-1 und enthält relevante Bestimmungen für Einrückungen, Länge jeder Codezeile, Zeilenumbrüche, Methodensichtbarkeitsdeklarationen, Leerzeichen und Klammerumbrüche im Methodenkörper.
Standardinhalt:
Der Code muss PSR-1 entsprechen
Code muss mit 4 Leerzeichen anstelle von Tabulatoren eingerückt werden
Es sollte keine feste Begrenzung für die Länge einer Codezeile geben; die weiche Begrenzung muss 120 Zeichen betragen, und es wird empfohlen, dass jede Codezeile höchstens 80 Zeichen lang ist
Unter der Namespace-Deklaration muss eine Leerzeile stehen, und unter der Verwendungsdeklaration muss auch eine Leerzeile stehen
Die linke geschweifte Klammer einer Klasse muss in einer eigenen Zeile unterhalb ihrer Deklaration platziert werden, und die rechte geschweifte Klammer muss in einer eigenen Zeile unterhalb des Klassenkörpers platziert werden
Die linke geschweifte Klammer einer Methode muss in einer eigenen Zeile unter ihrer Deklaration platziert werden, und die rechte geschweifte Klammer muss in der nächsten Zeile des Methodenkörpers platziert werden
Alle Eigenschaften und Methoden müssen Sichtbarkeitsdeklarationen haben; abstrakte und endgültige Deklarationen müssen vor der Sichtbarkeitsdeklaration erfolgen und statische Deklarationen müssen nach der Sichtbarkeitsdeklaration erfolgen
Nach dem Strukturkontrollschlüsselwort muss ein Leerzeichen stehen; nach Methoden- und Funktionsaufrufen darf kein Leerzeichen stehen
Die linke geschweifte Klammer des Struktursteuerelements muss in derselben Zeile wie dieses platziert werden, und die rechte geschweifte Klammer muss in der nächsten Zeile des Hauptteils des Struktursteuercodes platziert werden
Nach der linken Klammer der Kontrollstruktur darf kein Leerzeichen stehen und vor der rechten Klammer darf kein Leerzeichen stehen
PSR-3 (Logger-Schnittstelle)
PSR-3 ist die Definition der Anwendungsprotokollklasse über die Schnittstelle (Originaltext: offizielle Website, GitHub). Der Inhalt ist sehr einfach, es handelt sich lediglich um eine Schnittstelle. Zitieren Sie einfach den offiziellen Beispielcode. Natürlich können Sie in bestimmten Anwendungen die entsprechende Implementierung definitiv anpassen, solange Sie dieser Schnittstelle folgen.
Grundlegender Inhalt:
LoggerInterface stellt acht Schnittstellen zur Aufzeichnung von acht Protokollebenen bereit (Debug, Info, Hinweis, Warnung, Fehler, kritisch, Warnung, Notfall).
Die neunte Methode ist log, die die Protokollebene als ersten Parameter akzeptiert. Der Aufruf dieser Methode mit einer Log-Level-Konstante muss zum gleichen Ergebnis führen wie der direkte Aufruf der angegebenen Level-Methode. Der Aufruf dieser Methode mit einer Protokollebene, die in dieser Spezifikation nicht definiert ist und der Implementierung unbekannt ist, muss eine PsrLogInvalidArgumentException auslösen. Es wird nicht empfohlen, benutzerdefinierte Protokollebenen zu verwenden, es sei denn, Sie sind sich sehr sicher, dass die aktuelle Klassenbibliothek dies unterstützt.
PSR-4 (Verbessertes automatisches Laden)
PSR-4 ist eine verbesserte Version der automatischen Ladespezifikation (Originaltext: offizielle Website, GitHub). Es ist der Nachfolger der PSR-0-Spezifikation. Es ist mit jeder anderen Autoloading-Spezifikation kompatibel, einschließlich PSR-0.
Inhalt:
entspricht
übereinstimmen
Das Obige hat den Inhalt der PSR-Spezifikationsreihe von PHP vorgestellt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.