Eine PHP Standard Recommendation (PSR) ist eine als Empfehlung verfasste Spezifikation, welche durch die PHP Framework Interoperability Group (PHP FIG) veröffentlicht wird. Anders als bei einem Java Specification Request in Java empfiehlt eine PSR ausschließlich die Form der Programmierung mit PHP, nicht jedoch neue Features in PHP. Ziel der PSRs ist es, die Interoperabilität von (Dritt-)Komponenten (dependencies) zu ermöglichen, Quellcode universell lesbar und verständlich zu machen und bewährte Konzepte in der Programmierung zu standardisieren. Zielgruppe der PHP FIG ist primär jedes Mitglied der Gruppe, allerdings finden die PSRs über die FIG hinaus auch in den meisten anderen Projekten Aufmerksamkeit und Anwendung. Daher setzen Framework-Projektgruppen, die auch Mitglied der FIG sind, wie z. B. die der TYPO3-Community, von Symfony oder von Zend (Laminas), die PSR-Spezifikationen in einem selbst gewählten Umfang um. Eine Kompatibilität mit den PSRs und einschlägigen Bibliotheken ist ein sicherer Pfad zur Kompatibilität der eigenen Software mit den Produkten der FIG-Mitglieder.
Nummer | Name | Beschreibung | Status |
---|---|---|---|
PSR-0 | Autoloading Standard | Benennung von Komponenten in Bezug auf Hersteller, Namespace und Klasse sowie zugehörigen Verzeichnisnamen, so dass Komponenten bei Verwendung im PHP-Code bei Bedarf einheitlich automatisch nachgeladen werden können. | veraltet; abgelöst durch PSR-4 |
PSR-1 | Basis Coding Standard | Allgemeiner Programmierstil, der z. B. die Tags am Anfang eines PHP-Codes, den verwendeten Zeichensatz (UTF-8) sowie die Benennung von Klassen/Methoden regelt; erfordert die Umsetzung von PSR-0. | Angenommen |
PSR-2 | Coding Style Guide | Legt z. B. fest an welchen Stellen im Code Zeilenumbrüche bei Klammerausdrücken zu verwenden sind, Einrückungen und Leerzeichen oder die Sichtbarkeit von Eigenschaften und Methoden; erfordert die Umsetzung von PSR-1. | veraltet[1]; abgelöst durch PSR-12 |
PSR-3 | Logger Interface | Einheitliches Interface für Logmeldungen, zu verwendende Loglevel, Exceptions, das Format von Logmeldungen und zu verwendende Hilfsklassen in diesem Umfeld | Angenommen |
PSR-4 | Improved Autoloading | Erweiterung der Autoloading-Spezifikation aus PSR-0 | Angenommen |
PSR-5 | PHPDoc | Eine vollständige und formale Definition der PHPDoc-Syntax | Entwurf |
PSR-6 | Caching Interface | Interfaces für das Konzept des Caching | Angenommen |
PSR-7 | HTTP Message Interfaces | Einheitliches Interface für HTTP-Nachrichten und Umgang mit URIs | Angenommen |
PSR-8 | Huggable Interface | Aprilscherz | Inaktiv[2] |
PSR-9 | Security Disclosure | Vereinheitlichung von sicherheitsrelevanten Meldungen innerhalb von Projekten | Inaktiv[2] |
PSR-10 | Security Advisories | Vereinheitlichung der Kommunikation sicherheitsrelevanter Meldungen mit der Öffentlichkeit | Inaktiv[2] |
PSR-11 | Container Interface | Interface für Dependency Injection Containers | Angenommen (13.2.2017)[3] |
PSR-12 | Extended Coding Style Guide | Erweitert PSR-1 und PSR-2 um weitere Regeln zum Programmierstil | Angenommen (9.8.2019)[4] |
PSR-13 | Hypermedia Links | Spezifikation bzgl. einheitlicher Darstellung von hypermedialen Links. | Angenommen (15.11.2016)[5] |
PSR-14 | Event Manager | Einheitliche Schnittstellen für die Implementierung von Events. | Angenommen (25.3.2019)[6] |
PSR-15 | HTTP Handlers | Angenommen (22.1.2018)[7] | |
PSR-16 | Simple Cache | Vereinfachte Schnittstelle für Caching-Bibliotheken | Angenommen (1.1.2017)[8] |
PSR-17 | HTTP Factories | Standard für Fabrikmethoden zur Erstellung von PSR-7-kompatiblen Objekten | Angenommen (31.7.2018)[9] |
PSR-18 | HTTP Client | Standard zum Senden und Empfangen von HTTP-Anfragen | Angenommen (29.10.2018)[10] |
PSR-19 | PHPDoc tags | Katalog von PHPDoc-Tags | Entwurf |