PSR-4 |
PHP Standards Recommendations - 4 : Autoloader |
|---|---|
| PHP | |
Description
Les mots clefs «DOIT», «NE DOIT PAS», «REQUIS», «DEVRA», «NE DEVRA PAS», «DEVRAIT», «NE DEVRAIT PAS», «RECOMMANDÉ», «PEUT» et «FACULTATIF» dans ce document doivent être interprétés comme décrit dans la RFC 2119.
Cette spécification PSR décrit le chargement automatique des classes à partir de chemins de fichiers. Entièrement interopérable, elle peut être utilisée en complément de toute autre spécification de chargement automatique, y compris PSR-0. Cette spécification décrit également l'emplacement des fichiers à charger automatiquement.
Spécification
- Le terme «class» désigne les classes, les interfaces, les traits et autres structures similaires.
- Le nom complet d'une classe se présente comme suit :
- Le nom de classe pleinement qualifié DOIT comporter un nom d'espace de noms de premier niveau, également appelé « espace de noms fournisseur ».
- Le nom de classe pleinement qualifié PEUT comporter un ou plusieurs noms de sous-espaces de noms.
- Le nom de classe pleinement qualifié DOIT comporter un nom de classe final.
- Les traits de soulignement n'ont aucune signification particulière dans le nom de classe pleinement qualifié.
- Les caractères alphabétiques du nom de classe pleinement qualifié PEUVENT être une combinaison quelconque de minuscules et de majuscules.
- Tous les noms de classe DOIVENT être référencés en respectant la casse.
- Lors du chargement d'un fichier correspondant à un nom de classe pleinement qualifié...
- Une série contiguë d'un ou plusieurs noms d'espace de noms et de sous-espaces de noms (sans le séparateur d'espace de noms initial) dans le nom de classe pleinement qualifié (un « préfixe d'espace de noms ») correspond à au moins un « répertoire de base ».
- Les noms de sous-espaces de noms contigus suivant le « préfixe d'espace de noms » correspondent à un sous-répertoire au sein d'un « répertoire de base », où les séparateurs d'espaces de noms représentent des séparateurs de répertoires. Le nom du sous-répertoire DOIT respecter la casse des noms de sous-espaces de noms.
- Le nom de classe final correspond à un nom de fichier se terminant par .php. Le nom du fichier DOIT respecter la casse du nom de classe final.
- Les implémentations d'autoloader ne doivent pas lever d'exceptions, ne doivent pas générer d'erreurs de quelque niveau que ce soit et ne doivent pas renvoyer de valeur.
| \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName> |
Exemples
Le tableau ci-dessous présente le chemin d'accès au fichier correspondant à un nom de classe pleinement qualifié, un préfixe d'espace de noms et un répertoire de base donnés :
| Nom complet de la classe | Préfixe de l'espace de noms | Répertoire de base | Chemin du fichier résultant |
|---|---|---|---|
| \Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
| \Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
| \Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
| \Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
Dernière mise à jour : Mardi, le 17 février 2026