Maison >développement back-end >tutoriel php >Spécification PSR de la spécification PHP

Spécification PSR de la spécification PHP

不言
不言original
2018-04-26 14:42:313753parcourir

Cet article présente la spécification psr dans la spécification PHP. Maintenant, je le partage avec vous. Les amis intéressés peuvent y jeter un œil

Référence : http://psr .phphub.org/

PSR n'est pas un standard PHP officiel , mais une série de standards extraits de projets PHP bien connus tels que Zend et Symfony2 , il en existe actuellement de plus en plus et davantage de projets communautaires rejoignent et suivent cette norme. <br>

<br>

<br>

  • PSR- 0 Chargement automatique 2 Style de code

  • Interface de journal PSR-3

  • PSR-4 Comment pour spécifier les fichiers Chemin pour charger automatiquement la définition de classe

  • PSR-1 Basic Spécification de code

Cette spécification établit des normes pour les éléments de base du code afin de garantir un haut niveau de technologie entre le code

PHPpartagé. interopérabilité.

Fichier

·  PHP

Les fichiers de code

doivent être

dans <span style="color:#858080;background:#F9FAFA;"><?php</span> ou <span style ="color:#858080;background:#F9FAFA;"><?=<span style="color:#7D8688;"> la balise commence <span style="color:#858080;background:#F9FAFA;"><?php</span> · PHP<span style="color:#858080;background:#F9FAFA;"><?=</span>Fichier de code Obligatoire

Avec <span style="color:#858080;background:#F9FAFA;">sans </span><span style="color :#858080;background:#F9FAFA;">BOM <span style="color:#7D8688;"><span style="color:#858080;background:#F9FAFA;"></span> < span style="color:#858080;background:#F9FAFA;">UTF-8<strong> encodage; · <span style="color:#858080;background:#F9FAFA;">不带</span><span style="color:#858080;background:#F9FAFA;"> BOM </span>PHP<span style="color:#858080;background:#F9FAFA;">的</span><span style="color:#858080;background:#F9FAFA;"> UTF-8</span>Dans le code devrait être

Définissez uniquement les classes, fonctions, constantes, etc. déclarez , sinon d'autres produiront <span style ="color:#FF0000;background:#F9FAFA;">Effets secondaires</strong> opérations (telles que : générer une sortie de fichier et modification .ini fichier de configuration, etc.), vous ne pouvez choisir qu'un seul des deux <span style="color:#FF0000;background:#F9FAFA;">副作用</span> Espaces de noms et classes

· Le nom des classes doit suivre <code><span style="color:#858080;background:#F9FAFA;">StudlyCaps</span>StudlyCaps Étui chameau majusculeConvention de dénomination

· Chaque classe est un fichier indépendant et l'espace de noms a au moins un niveau : le nom de l'organisation de niveau supérieur (vendorname)

  • Attribut de classe : cas de chameau de départ minuscule $ studlyCaps

  • Méthode de classe : minuscule commençant par le chameau

Constante

·     Les constantes d'une classe ont toutes les lettres doivent être en lettres majuscules, avec des mots séparés par des traits de soulignement

< ; 🎜>
  • Le nom de la méthode doit être conforme au format <code><span style="color:#858080;background:#F9FAFA;">camelCase</span>camelCase, en commençant par la convention de dénomination des casses camel minuscules.

Spécification du style de codage PSR-2

Indentation

· Code Vous doit utiliser en utilisant 4 espaces au lieu des touches "Tab " mettre en retrait.

Lignes

  • Le nombre de caractères par ligne doit être maintenu en douceur à 80 Dans , il ne doit pas y en avoir plus de 120, mais il ne doit pas y avoir de limite stricte.

  • Tous les PHP fichiersdoiventcommencer par une ligne vide En guise de fin.

  • Chaque ligne ne doit pas contenir plus d'une déclaration

  • Une ligne vide doit être insérée après chaque espace de noms déclaration d'espace de noms et utiliser bloc de déclaration.

  • L'accolade ouvrante ({) de la classe doit être écrite après la déclaration de fonction sur sa propre ligne , l'accolade fermante (}) doit également être écrite après le corps de la fonction sur sa propre ligne .

    <🎜>
  • L'accolade ouvrante ({) de la méthode doit être écrite après la déclaration de la fonction sur sa propre ligne , et l'accolade fermante Les crochets (}) doivent également être écrits après le corps de la fonction sur sa propre ligne .

  • L'accolade ouvrante ({) de la structure de contrôle doit être écrite sur la même ligne comme la déclaration, et l'accolade fermante (}) doit être écrite après le corps sur sa propre ligne .

Modificateur

  • Attributs et méthodes de classe doivent ajouter des modificateurs d'accès (privé, protected et public), abstract et final doivent être déclarés avant les modificateurs d'accès, tandis que static doit être déclaré après le modificateur d'accès .

Espace

  • Paramètre de la méthode de classeIl doit y avoir un espace après chaque virgule, et la virgule Il ne doit y avoir aucun espace devant

  • Il ne doit y avoir aucun espace après la parenthèse gauche ouvrante et avant la parenthèse droite fermante de la structure de contrôle.

Mots clés

·  Structure de contrôle Là doit être un caractère espace après le mot-clé , et lors de l'appel d'une méthode ou d'une fonction, ne doit pas avoir .

  • Tous les mots-clés PHP doivent être tous en minuscules, et les constantes true, false et null doivent également être toutes en minuscules.

Spécification de l'interface de journal PSR-3

<code><span style="color:#858080;background:#F9FAFA;">LoggerInterface</span>LoggerInterface Définition externe de l'interface Huit méthodes sont utilisées pour enregistrer les huit niveaux de logs définis dans RFC 5424  : debug , infos, avis, avertissement, erreur, critique, alerte et urgence .

La neuvième méthode —— <span style="color:#858080;background:#F9FAFA;"></span>log, son premier paramètre est Niveau enregistré. Cette méthode peut être appelée en utilisant une constante de niveau prédéfinie comme paramètre doit être ce qui a le même effet que d'appeler directement les huit méthodes ci-dessus. Si le paramètre constant de niveau transmis n'est pas prédéfini, alors doit lancer <span style="color:#858080;background:#F9FAFA;"></span>PsrLogInvalidArgumentException tapez exception. Les utilisateurs ne doivent pas utiliser des constantes de niveau non prises en charge pour appeler cette méthode dans des circonstances incertaines.

/**

* Définition de la constante de niveau de journalisation

*/

classe LogLevel

{

 constURGENCE ='urgence';

 constALERTE ='alerte';

 constCRITIQUE ='critique';

 constERREUR ='erreur';

<🎜>

constAVERTISSEMENT ='avertissement';

constAVIS = 'avis';

 constINFO ='info';

 constDEBUG ='debug';

}

Spécification de chargement automatique PSR-4

Similaire à l'exemple suivant : ()*

1. Les noms de classe entièrement conformes doivent avoir un espace de noms de niveau supérieur (Nom du fournisseur)

2. Les noms de classe entièrement conformes peuvent avoir plusieurs sous-espaces de nomsComplet. Les noms de classe conformes doivent avoir un nom de classe de fin

4 Les traits de soulignement n'ont aucune signification particulière dans les noms de classe entièrement conformes

5. les lettres peuvent être n'importe quelle combinaison de majuscules et de minuscules dans les noms de classe entièrement conformes

6. Tous les noms de classes doivent être cités en respectant la casse

Le le nom de la classe de terminaison correspond à un fichier se terminant par .php

. Le nom du fichier doit correspondre à la casse du nom de la classe de terminaison Certaines spécifications de personnalisation courantes

Couche de contrôle

1. Aucune instruction SQL n'apparaît (sql est encapsulé dans la couche modèle puis appelé en tant que méthode)

2. Instructions SQL, 3 lignes ou plus de code logique, lignes vides

3. Aucune ligne vide entre les fonctions ou méthodes contextuelles

4. Bool utilise if (true === $name) est de la forme

5 Utilisez des guillemets doubles pour lier les variables

. 6. Faites attention aux conversions implicites

7. Lorsque vous utilisez des variables globales, vous devez commenter leur signification. La plage de valeurs est

. /**

*

Description globale des variables globales * Global STATUS_CODE

* 0

- SUCCÈS * 2 - ERREUR*/<br>STATUS_CODE<br><br><br> <br><br>8. L'en-tête de la fonction a l'annotation suivante :

/***************************************************<br> Fonction : // Nom chinois de la fonction<br>Description : // Description des fonctions de la fonction, performances, etc.<br>Appels : // Liste des fonctions appelées par cette fonction<br>Appelé par : // Liste des fonctions qui appellent cette fonction <br>Table accédée : // La table en cours d'accès (cet élément est uniquement destiné aux programmes impliquant des opérations de base de données) <br>Table mise à jour : // La table en cours de modification ( cet élément est uniquement destiné aux programmes impliquant des opérations de base de données) Programme pour opérer sur la base de données) <br>Entrée :                    // Description du paramètre d'entrée, y compris le rôle de chaque paramètre, la description de la valeur et la relation entre les paramètres. <br>Sortie :              // Description des paramètres de sortie. <br>Retour :                                                                                                                                                                                                                                                         *************************/<br><br>

9. Remarques Lignes vides entre

// code un commentaires<br>code de programme un <br><br> // code deux commentaires<br>code de programme deux

10. Commentaires d'en-tête de fichier

/**************************************************** * ********Copyright (C), 1988-1999, Huawei Tech Co., Ltd. // <br>CopyrightNom du fichier : test.cpp Nom du fichierAuteur :                                                                                                                                                                                                                                                                                            // Principales fonctions et leurs fonctions<br>Historique :                                                                                                                                                                                                                                                1.0 init************ ****************** *********************************/<br><br><br><br><br> <br><br><br><br>11. Le saut de cas de l'instruction switch nécessite des commentaires

12.

temp peut être abrégé en tmp ;<br>flag peut être abrégé en flg ;<br>statistique peut être abrégé en stat ;<br>incrément peut être abrégé en inc ;<br>message Peut être abrégé en msg ;

13. préfixe d'interface

ajouter / supprimer commencer / fin créer / détruire<br>insérer /supprimer le premier / dernier obtenir / version <br>incrémenter /décrémenter mettre / obtenir<br>ajouter /supprimer le verrouillage / déverrouiller ouvrir / fermer<br>min /ancien max / nouveau                                                                                    / afficher la cible <br>/ masquerenvoyer /recevoir la source / destinationcouper <br>/ coller vers le haut / vers le bas<br> 14. Essayez d'utiliser des constantes pour les codes d'état au lieu de chiffres difficiles à comprendre

doit être remplacé par la forme suivante. <br>#defineTRUNK_IDLE 0<br>#define TRUNK_BUSY 1<br> <br>if (Trunk[index].trunk_state == TRUNK_IDLE)<br>{<br> Coffre [index].trunk_state = TRUNK_BUSY;<br> ... //code du programme<br>}

15. Les noms de fichiers de classe utilisent premier cas de chameau majuscule , Les fichiers ordinaires sont nommés à l'aide de traits de soulignement

16. Les variables de la configuration sont nommées à l'aide de traits de soulignement

1. 变量自增自减写到表达式前面: --e >= $name
2. 程序顺序应该遵循:参数定义代码->判断逻辑代码->业务逻辑代码
3. 大的数据使用引用
4. 为逻辑代码里每个复杂度高/重复度高的代码添加注释
5. 尽量不为简短代码引入新的变量,减少变量污染
<br>

1, si vous pouvez définir la méthode de classe comme statique , essayez de le définir comme statique, sa vitesse augmentera de près de 4 fois.

2, La vitesse de $row['id'] est $row[id]7 fois.

3, echo est plus rapide que print, et utilisez echo(Note de traduction : fait référence à l'utilisation de virgules au lieu de points ) au lieu de la concaténation de chaînes, comme écho $str1 ,$str2.

4, exécution de for Déterminez le nombre maximum de boucles avant de boucler. Ne calculez pas la valeur maximale à chaque boucle. Il est préférable d'utiliser foreach. à la place.

5 Désenregistrez les variables inutilisées, en particulier les grands tableaux, pour libérer de la mémoire.

6, essayez d'éviter d'utiliser __get, __set, __autoload .

7, require_once() coûte cher.

8, Essayez d'utiliser des chemins absolus lors de l'inclusion de fichiers , car cela évite d'avoir besoin de PHP aller La vitesse de recherche des fichiers dans include_path prendra moins de temps pour analyser le chemin du système d'exploitation.

9, si vous voulez savoir que le script commence à s'exécuter (Annotation : Le serveur reçoit la demande du client), il vaut mieux utiliser $_SERVER['REQUEST_TIME'] que heure().

10, les fonctions remplacent les expressions régulières pour compléter la même fonction.

11, La fonction str_replace est plus rapide que la fonction preg_replace, str est la quatrième de la str_replace horaires de fonction.

12, s'il s'agit d'une fonction de remplacement de chaîne, accepte des tableaux ou des caractères comme paramètre et que la longueur du paramètre n'est pas trop longue, vous pouvez envisager d'écrire un morceau de code de remplacement supplémentaire afin que chaque paramètre passé soit un caractère, au lieu de simplement écrire une ligne de code pour accepter un tableau comme paramètre de requête et remplacement.

13, utilisez l'instruction de branche select (Traduction : c'est-à-dire changer de boîtier) est plus facile d'utiliser Multiple si, sinon si déclaration.

14, utilisez @La pratique consistant à bloquer les messages d'erreur est très inefficace, extrêmement inefficace.

15, ouvert

mod_deflate de >apache peut améliorer la vitesse de navigation des pages Web .

16 La connexion à la base de données doit être fermée une fois son utilisation terminée. Les messages d'erreur coûtent cher.

18, Éviter

incrément

global Variables Recommandations associées : PSR-4 sur les spécifications PHP À propos du journal manuscrit de Lei Feng À propos de la Fête du Printemps Journal manuscrit sur la Fête du Printemps Spécification PHP PSR-1 langage php manuel php développeur 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn