PSR (PHP Standards Recommendation) ist eine Reihe von formellen Spezifikationen, die durch das PHP-Fig (Framework Interoperability Group) entwickelt wurden, um die Interoperabilität und Qualität des PHP-Codes zu verbessern. Diese Empfehlungen helfen Entwicklern, konsistenten und wiederverwendbaren Code zu schreiben, der leicht von anderen Projekten und Frameworks verstanden und integriert werden kann.
Die wichtigsten PSRs, die in der PHP-Community weit verbreitet sind und oft als Standard gelten, umfassen unter anderem:
1. PSR-1: Basic Coding Standard PSR-1 legt grundlegende Konventionen für das Schreiben von PHP-Code fest. Dazu gehören Namenskonventionen für Klassen, Methoden und Konstanten sowie die strikte Verwendung von UTF-8 ohne BOM (Byte Order Mark) für alle PHP-Dateien. Beispiel: Klassen- und Methodennamen sollten in PascalCase und CamelCase geschrieben werden. Eine Konstante sollte in Großbuchstaben mit Unterstrichen wie `CONST_NAME` geschrieben werden.
Quelle: [PSR-1 Basic Coding Standard](https://www.php-fig.org/psr/psr-1/)2. PSR-2: Coding Style Guide Aufbauend auf PSR-1 spezifiziert PSR-2 detaillierte Regeln für den Code-Stil, um besonders die Lesbarkeit und Wartbarkeit des Codes zu fördern. Dazu gehören Regeln für Einrückungen, das Platzieren von Klammern, und die Formatierung von Codeblöcken. Beispiel: Einrückungen sollten mit vier Leerzeichen und nicht mit Tabulatoren erfolgen. Öffnende Klammern für Klassen und Methoden sollten in der nächsten Zeile platziert werden.
Quelle: [PSR-2 Coding Style Guide](https://www.php-fig.org/psr/psr-2/)3. PSR-4: Autoloading Standard PSR-4 stellt eine Autoloading-Spezifikation bereit, die es ermöglicht, Klassen automatisch zu laden, ohne manuell `include` oder `require` verwenden zu müssen. Dies erleichtert die Entwicklung großer Projekte erheblich, da Klassendateien nach einem strikten Namensraum und Verzeichnisstruktur geladen werden. Beispiel: Eine Klasse `App\Controller\HomeController` sollte in der Datei `src/Controller/HomeController.php` zu finden sein.
Quelle: [PSR-4 Autoloading Standard](https://www.php-fig.org/psr/psr-4/)4. PSR-7: HTTP Message Interface PSR-7 definiert Schnittstellen für HTTP-Nachrichten, was eine Standardisierung von HTTP-Anfragen und -Antworten ermöglicht. Dies ist besonders nützlich für Frameworks und Middleware, die HTTP-Nachrichten verarbeiten. Beispiel: Eine HTTP-Request-Klasse muss Methoden wie `getMethod()`, `getUri()` und `getBody()` implementieren, um konsistent mit PSR-7 zu sein.
Quelle: [PSR-7 HTTP Message Interface](https://www.php-fig.org/psr/psr-7/)5. PSR-12: Extended Coding Style Guide PSR-12 erweitert die Richtlinien von PSR-2 und deckt zusätzliche Aspekte des Codings ab, wie Importierungsdeklarationen, Sichtbarkeitsmodifizierer und mehr. Beispiel: Importanweisungen sollten in Blöcken gruppiert und alphabetisch sortiert werden. Variablen innerhalb von Methoden sollten klein geschrieben und mit einem Unterstrich getrennt sein.
Quelle: [PSR-12 Extended Coding Style Guide](https://www.php-fig.org/psr/psr-12/)Diese Standards sind nicht verpflichtend, aber sie bieten bewährte Praktiken, die von vielen Projekten und großen PHP-Frameworks wie Laravel, Symfony und Zend Framework übernommen wurden. Durch die Einhaltung dieser Standards wird nicht nur die Lesbarkeit und Konsistenz des Codes verbessert, sondern auch die Zusammenarbeit zwischen Entwicklern erleichtert.
Zusammengefasst sind PSRs Richtlinien, die von der Community für die Community entwickelt wurden, um die Qualität von PHP-Projekten zu erhöhen und das Arbeiten in gemeinsamen Codebasen zu erleichtern.
Weitere Quellen:
- [PHP-FIG Website](https://www.php-fig.org)
- [PHP: The Right Way](https://www.phptherightway.com)
- [Official PHP Documentation](https://www.php.net/docs)