PHP : bonnes pratiques et conventions : ====================================== `Blog Severin Bruhat : `_ Introduction ------------ L'écosystème PHP est vaste et complet : beaucoup d'outils, frameworks et CSM sont disponibles, la communauté est importante et active, les entreprisent recrutent, les clients sont nombreux…. Dans un monde faisant intervenir autant d'acteurs, il est important de suivre certaines "normes" afin d'assurer la pérénité des projets (et du langage). Ces conventions ont pour but de fournir des bonnes pratiques afin d'homogénéiser les développements et de simplifier la maintenabilité du code. En effet, un projet PHP qui repsecte les normes est plus facile à prendre en main par un nouveau développeur et ainsi plus simple à maintenirqu'un projet ne les respectant pas. Il existe 3 grands standards PHP : * `PEAR `_ * `Zend `_ * `PSR `_ Nous parlerons de la convention PSR qui tend à devenir le standard respecté par Hoa,CakePHP,Symfony notamment. PSR-0 : autoloading ------------------- L'objectif de la PSR-0 est de rendre standard le chargement des classes afin d'éviter les "include" et "require". Ce système d'autoloading repose sur la bonne utilisation des namespaces. Voici la liste des principales règles : * Les classes et les espaces de noms entièrement qualifiés doivent disposer de la structure suivante\\(\)*. - Chaque espace de noms doit avoir un espace de noms racine. ("Nom du Vendor"). - Chaque espace de noms peut avoir autant de sous-espaces de noms qu'il le souhaite. - Chaque séparateur d'un espace de noms est converti en DIRECTORY_SEPARATOR lors du chargement à partir du système de fichiers. - Chaque "_" dans le nom d'une CLASSE est converti en DIRECTORY_SEPARATOR. Le caractère "_" n'a pas de signification particulière dans un espace de noms. * Les classes et espaces de noms complètement qualifiés sont suffixés avec ".php" lors du chargement à partir du système de fichiers. * Les caractères alphabétiques dans les noms de vendors, espaces de noms et noms de classes peuvent contenir n'importe quelle combinaison de minuscules et de majuscules. Le fichier d'autoload généré est par **Composer**, par exemple, respecte cette norme. PSR-1 : La norme de codage de base ---------------------------------- La PSR-1 décrit les éléments standards de codage nécessaires pour assurer un niveau élevé d'interopérabilité technique pour le partage du code PHP. Cette norme concerne : les fichiers, les espaces de nom et noms des classes ainsi que les constantes de classe, propriétés et méthodes : Vue d'ensemble *************** * Les fichiers DOIVENT utiliser seulement les tags