Les PSR (PHP Standards Recommendations) sont des recommandations élaborées par le PHP-FIG (PHP Framework Interoperability Group) dans le but d’offrir des standards de codage uniformes pour la communauté PHP. Ces recommandations visent à améliorer l’interopérabilité entre les différents projets et frameworks PHP, tout en facilitant la collaboration et la maintenance du code à long terme.
Le PHP-FIG fut créé en 2009 par des principaux auteurs de frameworks PHP, notamment Zend Framework, Symfony, et Laravel, entre autres. Leur objectif était de standardiser certaines pratiques courantes dans le codage PHP afin que les développeurs puissent passer d’un projet à un autre sans trop de difficultés.
PSR-1: Basic Coding Standard
La PSR-1 définit les standards de base pour coder en PHP. Elle inclut des règles sur les namespaces, les classes, et les conventions de nommage. Par exemple, une classe doit avoir un nom en PascalCase (e.g., `ClassName`) tandis que les constantes doivent être en majuscule avec des underscores (e.g., `MY_CONSTANT`).
PSR-2: Coding Style Guide
La PSR-2 est une extension de la PSR-1, et elle s’étend davantage sur les styles de codage. Par exemple, cette recommandation spécifie que les accolades ouvrantes doivent être placées sur la même ligne que leur déclaration, et que chaque niveau d’indentation doit utiliser quatre espaces.
PSR-4: Autoloader
La PSR-4 spécifie une norme pour l’auto-chargement des fichiers de classes en PHP. Elle utilise une structure de répertoires normalisée afin que les fichiers puissent être automatiquement chargés lorsqu’ils sont nécessaires. Par exemple, si vous avez une classe `App\Controller\HomeController`, le fichier pour cette classe doit se trouver dans le chemin `/src/Controller/HomeController.php`.
PSR-7: HTTP Message Interfaces
La PSR-7 définit des interfaces pour les messages HTTP, afin de normaliser les interactions avec les requêtes et réponses HTTP. Cela est particulièrement utile pour les frameworks et middlewares qui doivent communiquer entre eux de manière standardisée.
L’un des avantages majeurs d’adhérer aux PSR est qu’elles facilitent l’interopérabilité entre les projets. Par exemple, un développeur qui suit les recommandations PSR dans un projet Symfony pourra facilement comprendre et contribuer à un projet Zend Framework ou Laravel, sans avoir à réapprendre une nouvelle série de conventions de codage. Cela accélère la courbe d’apprentissage et réduit les erreurs dues aux différences de style ou d’organisation du code.
- PHP-FIG: C’est l’organisation qui propose et maintient les PSR. Le site officiel contient des descriptions détaillées de chaque recommandation. [PHP-FIG](https://www.php-fig.org/).
- Symfony Docs: De nombreux frameworks tels que Symfony ont adopté les PSR, et leurs documentations incluent souvent des références aux PSR. [Symfony Documentation](https://symfony.com/doc/current/contributing/code/standards.html).
- PHP Manual: Tandis que le manuel PHP ne décrit pas directement les PSR, il offre des informations précieuses sur les aspects fondamentaux du langage qui sont souvent encadrés par ces recommandations. [PHP Manual](https://www.php.net/manual/en/index.php).
En somme, les PSR jouent un rôle crucial dans l’uniformisation et la normalisation des pratiques de codage PHP, facilitant ainsi le travail collaboratif, l’adoption de bonnes pratiques, et l’interopérabilité entre différentes bibliothèques et frameworks.