Heim  >  Artikel  >  php教程  >  Spezifikationen der PHP PSR-Serie

Spezifikationen der PHP PSR-Serie

不言
不言Original
2018-05-23 14:58:412457Durchsuche

PSR

ist die Abkürzung für PHP Standard Recommendation. Eigentlich sollte es PSRs heißen, was eine Reihe empfohlener Standards darstellt: Zu den derzeit verabschiedeten Spezifikationen gehören PSR-0 (Autoloading Standard), PSR-1 (Basic). Coding Standard), PSR-2 (Coding Style Guide), PSR-3 (Logger Interface), PSR-4 (Improved Autoloading). 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 Spezifikation für das automatische Laden von Klassen (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:

Ein vollständig qualifizierter Namespace und Klassenname muss die folgende Struktur haben: „()*

Jeder Namespace muss einen Top-Level-Namespace („Anbietername“) haben

Jeder Namespace kann eine beliebige Anzahl von Unter-Namespaces haben

Jeder Namespace wird aus der Datei entfernt, wenn das System geladen wird , es muss in „Betriebssystem-Pfadtrennzeichen“ (DIRECTORY_SEPARATOR) konvertiert werden.

Jedes „_“-Zeichen im „Klassennamen“ wird in DIRECTORY_SEPARATOR konvertiert. Das „_“-Symbol hat im Namespace keine eindeutige Bedeutung

Namespace- und Klassennamen, die den Benennungsstandards entsprechen, müssen mit „.php“ enden, um die Datei zu laden

Anbietername, Namespace, Klassenname Kann aus Groß- und Kleinbuchstaben bestehen, wobei bei Namespaces und Klassennamen die Groß-/Kleinschreibung beachtet wird, um die Kompatibilität mit mehreren Systemen sicherzustellen

PSR-1 (Basic Coding Standard)

PSR-1 ist grundlegender Codierungsstandard (Originaltext: offizielle Website, GitHub). Der Inhalt ist ebenfalls sehr prägnant, einschließlich der Benennungsmethode für Klassendateien, Klassennamen und Klassenmethodennamen.

Inhalt:

Die Quelldatei darf nur die Tags

Das Kodierungsformat des PHP-Codes in der Quelldatei darf nur verwendet werden Verwenden Sie kein UTF-8 mit BOM

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, ändern). .ini-Konfigurationsdateien) usw.), aber Sie sollten diese beiden Dinge nicht gleichzeitig tun

Namespaces und Klassen müssen dem PSR-0-Standard entsprechen

Klassennamen müssen mit geschrieben werden StudlyCaps

Konstanten in der Klasse dürfen nur aus Großbuchstaben und Unterstrichen (_) bestehen

Methodennamen müssen mit 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:

Code muss PSR-1 entsprechen

Code muss 4 Leerzeichen für Einrückungen anstelle von Tabulatoren verwenden

Es sollte keine feste Grenze geben auf die Länge einer Codezeile; die weiche Grenze muss 120 Zeichen betragen, und es wird empfohlen, dass jede Codezeile 80 Zeichen oder weniger lang ist

Unter der Namespace-Deklaration muss eine Leerzeile stehen Verwendung Es muss auch eine Leerzeile unter der Deklaration stehen

Die linke geschweifte Klammer der Klasse muss in einer eigenen Zeile unter ihrer Deklaration platziert werden, und die rechte geschweifte Klammer muss eigenständig unter dem Klassenkörper platziert werden Zeile

Methode Die linke geschweifte Klammer 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 haben Sichtbarkeitsdeklarationen; abstrakte und endgültige Deklarationen müssen in der Sichtbarkeitsdeklaration stehen und die statische Deklaration muss nach der Sichtbarkeitsdeklaration stehen. Nach dem Strukturkontrollschlüsselwort darf kein Leerzeichen stehen nach dem Methoden- und Funktionsaufruf

Die linke Seite des Struktursteuerelements Die geschweifte Klammer muss in derselben Zeile wie diese platziert werden, und die rechte geschweifte Klammer muss in der nächsten Zeile nach dem Hauptteil des platziert werden Steuercode der Struktur

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 (Improved Autoloading)

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:

Der Begriff „Klasse“ ist ein allgemeiner Begriff; er umfasst Klassen, Schnittstellen, Merkmale und andere ähnliche Strukturen.

Der vollständig qualifizierte Klassenname sollte wie folgt aussehen: das folgende Beispiel: ()*

Ein vollständig kompatibler Klassenname muss einen Namensraum der obersten Ebene (Anbietername) haben

Ein vollständig kompatibler Klassenname kann mehrere Subnamespaces haben

Vollständig kompatible Klassennamen sollten einen abschließenden Klassennamen haben

Unterstriche haben in vollständig kompatiblen Klassennamen keine besondere Bedeutung

Buchstaben haben keine besondere Bedeutung in Vollständig kompatible Klassennamen Klassennamen können eine beliebige Kombination aus Groß- und Kleinschreibung haben

Alle Klassennamen müssen unter Berücksichtigung der Groß-/Kleinschreibung in Anführungszeichen gesetzt werden

Beim Laden von Dateien aus vollständig konformen Klassennamen:

In einem vollständig kompatiblen Klassennamen entspricht ein Namespace-Präfix, das aus einem oder mehreren aufeinanderfolgenden Unter-Namespaces (mit Ausnahme des Trennzeichens des Top-Level-Namespace) besteht, mindestens einem Basisverzeichnis

in „namespace Die aufeinanderfolgenden Sub-Namespace-Namen nach dem „Präfix“ entsprechen einem Unterverzeichnis unter dem „Basisverzeichnis“, wobei das Namespace-Trennzeichen das Verzeichnis-Trennzeichen darstellt. Der Unterverzeichnisname muss mit der Groß-/Kleinschreibung des Subnamespace-Namens übereinstimmen

Der abschließende Klassenname entspricht einer Datei mit der Endung .php. Der Dateiname muss mit der Groß-/Kleinschreibung des abschließenden Klassennamens übereinstimmen

Die Implementierung des Autoloaders darf keine Ausnahmen auslösen oder Fehler jeglicher Ebene verursachen und sollte auch keinen Wert zurückgeben

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