Was sind die Inhalte der PSR-Spezifikationsserie von PHP?

WBOY
Freigeben: 2016-08-08 09:30:37
Original
712 Leute haben es durchsucht

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:

  1. Ein vollständig qualifizierter Namespace und Klassenname muss die folgende Struktur haben: „<Vendor Name>(<Namespace>)*<Class Name>“
  2. Jeder Namespace muss einen Top-Level-Namespace („Anbietername“) haben
  3. Jeder Namespace kann eine beliebige Anzahl von Sub-Namespaces haben
  4. Jeder Namespace muss beim Laden aus dem Dateisystem in ein „Betriebssystem-Pfadtrennzeichen“ (DIRECTORY_SEPARATOR) umgewandelt werden
  5. Jedes „_“-Zeichen im „Klassennamen“ wird in einen DIRECTORY_SEPARATOR umgewandelt. Das Symbol „_“ hat im Namespace
  6. keine eindeutige Bedeutung
  7. Namespace- und Klassennamen, die den Benennungsstandards entsprechen, müssen mit „.php“ enden, um Dateien laden zu können
  8. Vendor NameNamespace- 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 sicherzustellen

PSR-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:

  1. Quelldateien dürfen nur die Tags verwenden

  2. Das Codierungsformat des PHP-Codes in der Quelldatei darf nur UTF-8 ohne BOM verwenden

  3. 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

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

  5. Klassennamen müssen mit StudlyCaps geschrieben werden

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

  7. 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:

  1. Der Code muss PSR-1 entsprechen

  2. Code muss mit 4 Leerzeichen anstelle von Tabulatoren eingerückt werden

  3. 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

  4. Unter der Namespace-Deklaration muss eine Leerzeile stehen, und unter der Verwendungsdeklaration muss auch eine Leerzeile stehen

  5. 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

  6. 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

  7. 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

  8. Nach dem Strukturkontrollschlüsselwort muss ein Leerzeichen stehen; nach Methoden- und Funktionsaufrufen darf kein Leerzeichen stehen

  9. 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

  10. 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:

  1. LoggerInterface stellt acht Schnittstellen zur Aufzeichnung von acht Protokollebenen bereit (Debug, Info, Hinweis, Warnung, Fehler, kritisch, Warnung, Notfall).

  2. 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:

  1. Der Begriff „Klasse“ ist ein allgemeiner Begriff; er umfasst Klassen, Schnittstellen, Merkmale und andere ähnliche Konstrukte;
  2. Der vollständig qualifizierte Klassenname sollte wie im folgenden Beispiel aussehen: ()*

    1. Der vollständig qualifizierte Klassenname muss einen Namensraum der obersten Ebene (Anbietername) haben

    2. Ein vollständig qualifizierter Klassenname kann mehrere Unternamespaces haben

    3. Vollqualifizierte Klassennamen sollten einen abschließenden Klassennamen haben

    4. Unterstriche haben in vollständig qualifizierten Klassennamen keine besondere Bedeutung

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

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

  3. Beim Laden einer Datei von einem vollständig qualifizierten Klassennamen:
    1. In einem vollständig qualifizierten Klassennamen ein Namespace-Präfix, das aus einem oder mehreren aufeinanderfolgenden Unter-Namespaces (mit Ausnahme des Trennzeichens des Top-Level-Namespace) besteht und mindestens einem Basisverzeichnis

      entspricht

    2. Die aufeinanderfolgenden Sub-Namespace-Namen nach dem „Namespace-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

    3. Der Terminierungsklassenname entspricht einer Datei mit der Endung .php. Der Dateiname muss mit der Groß-/Kleinschreibung des abschließenden Klassennamens

      übereinstimmen

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

Hinweis: Der spezifische Spezifikationsinhalt wurde unter Bezugnahme auf andere chinesische Übersetzungsversionen zusammengestellt.

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage