Maison > Article > développement back-end > Framework API PHP manuscrit (1) Spécification PSR
Cet article vous apporte des connaissances pertinentes sur PHP. Il parle principalement avec vous des normes de codage. Il est également recommandé d'essayer de suivre les normes pendant le développement. Les amis intéressés peuvent jeter un œil ci-dessous. vous. aider.
J'espère que cela pourra vous aider à construire rapidement votre propre framework et apporter de l'aide et de l'inspiration à votre travail ou vos études.
Spécification PSR
Utilisation de composer
Créer rapidement un framework d'interface API
Applications Redis de différents types de données
Analyse d'application de cache
Avant de développer le framework, permettez-moi de vous présenter les spécifications suivies par le développement du framework.
La plupart des langages de programmation ont leur propre ensemble de normes de codage. En tant que « meilleur langage au monde », PHP a certainement ses propres normes de codage. Cette spécification est une recommandation standard PHP (PSR en abrégé).
Bien sûr, d'après mon propre travail, j'ai découvert que de nombreux programmeurs PHP, en particulier les programmeurs juniors, ne savent pas que PHP a une telle spécification. Je pense que ce n'est pas scientifique.
Qu'est-ce que le PSR ?
Avant d'introduire PSR, je dois présenter l'organisation qui a formulé cette spécification -----PHP-FIG, le nom complet est PHP Framework Interoperability.
Les membres de l'organisation formulent des spécifications et les mettent en œuvre dans leurs propres projets. Bien qu'il ne s'agisse pas d'une organisation officielle, elle représente également la plupart des projets de la communauté PHP, tels que CakePHP, Composer, Drupal, PEAR, Slim, Yii framework, Zend Framework, etc. Et de plus en plus de projets rejoignent et suivent cette norme.
Le but du projet PSR est de développer une norme de collaboration avec le niveau de restrictions le plus bas grâce à des discussions entre les auteurs du framework ou les représentants du framework. Chaque framework suit des normes de codage unifiées pour permettre aux ingénieurs de mieux travailler ensemble.
Jusqu'à présent, 20 éléments ont été répertoriés sur le site officiel. En excluant ceux en rédaction et rejetés, il y a les 13 éléments suivants.
Autant jeter un œil à ces spécifications :
Spécifications de codage de base PSR-1
Spécification du style de code PSR-12
Les spécifications PSR-12 sont très détaillées, notamment les déclarations, les espaces de noms, les classes et l'héritage, ainsi que les structures de contrôle, etc. illustrent.
Jetons d'abord un coup d'œil à une démo :
<?php declare(strict_types=1); namespace Vendor\Package; use Vendor\Package\{ClassA as A, ClassB, ClassC as C}; use Vendor\Package\SomeNamespace\ClassD as D; use function Vendor\Package\{functionA, functionB, functionC}; use const Vendor\Package\{ConstantA, ConstantB, ConstantC}; class Foo extends Bar implements FooInterface { public function sampleFunction(int $a, int $b = null): array { if ($a === $b) { bar(); } elseif ($a > $b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); } } final public static function bar() { // method body } }
控制结构关键词后必须有一个空格。 左括号 ( 后一定不能有空格。 右括号 ) 前也一定不能有空格。 右括号 ) 与开始花括号 { 间一定有一个空格。 结构体主体一定要有一次缩进。 结束花括号 } 一定在结构体主体后单独成行。复制代码
À propos des spécifications pertinentes pour le chargement automatique. la classe correspondante à partir du chemin du fichier, cette spécification est interopérable et peut être utilisée en complément de toute spécification de chargement automatique, y compris PSR-0. De plus, ce PSR inclut également la spécification du chemin de stockage du fichier correspondant à la classe automatiquement chargée.
\(\)*\
avoir un espace de noms de niveau supérieur, appelé "espace de noms du fournisseur"
avoir un ou plusieurs sous-espaces de noms ;
avoir un nom de classe final
Le nom complet de la classe peut être composé de lettres majuscules et minuscules
Tous les noms de classe doivent être sensibles à la casse.
Lors du chargement du fichier correspondant en fonction du nom complet de la classe...
Dans le nom complet de la classe, supprimez le premier séparateur d'espace de noms, un ou plusieurs espaces de noms et sous-espaces de noms consécutifs devant, comme un "préfixe d'espace de noms", il doit correspondre à au moins un "répertoire de base de fichiers"
Le sous-espace de noms qui suit immédiatement le préfixe d'espace de noms doit correspondre au "répertoire de base de fichiers" correspondant, où le séparateur d'espace de noms sera utilisé comme séparateur de répertoire. Le nom de la classe
à la fin de doit avoir le même nom que le fichier correspondant avec .php
comme suffixe.
L'implémentation de l'autoloader ne doit pas lever d'exception, ne doit pas déclencher un quelconque niveau de message d'erreur, et ne doit pas avoir une valeur de retour.
Le tableau suivant montre les chemins de fichiers correspondant au nom de classe complet, au préfixe d'espace de noms et au répertoire de base de fichiers conformes à la spécification.
Nom complet de la classe | Préfixe de l'espace de noms | Répertoire de base du fichier | Chemin du fichier |
---|---|---|---|
AcmeLogWriter File_Writer | AcmeLogWriter | ./acme-log- écrivain/lib / | ./acme- log-writer/lib/File_Writer.php |
AuraWebResponseStatus | AuraWeb | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
SymfonyCoreRequest | SymfonyCore | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
ZendAcl | Zend | /usr /inclues/Zend/ | / usr /includes/Zend/Acl.php |
Pour l'instant, nous présenterons uniquement ces trois spécifications couramment utilisées.
Cliquez pour afficher les dernières suggestions de spécifications
Cette section présente principalement la spécification de codage PHP PSR. Il est recommandé à tout le monde d'essayer de suivre cette spécification pendant le développement, en particulier lors du développement en équipe, nous ne devrions pas chacun avoir notre. propre codage Le style doit être aussi unifié que possible. Comme l'indiquait l'intention initiale de l'organisation PHP-FIG, les spécifications qu'elle a établies ne visent pas à restreindre la liberté de codage de chacun, mais à trouver des points communs afin que nous puissions mieux travailler ensemble.
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!