Maison > Article > développement back-end > Partage des spécifications de style de code PHP
(1) Les fichiers sources de code PHP pur utilisent uniquement la balise
(2). Le format d'encodage du code PHP dans le fichier source doit être au format UTF-8 sans nomenclature
(3) Utilisez Unix LF (saut de ligne) comme ; le terminateur de ligne ;
(4). Un fichier source ne fait qu'un seul type de déclaration, c'est-à-dire que ce fichier est spécifiquement utilisé pour déclarer la classe et que ce fichier est spécifiquement utilisé pour définir les informations de configuration. les ensemble ;
Utilisez la touche Tab pour mettre en retrait, et la longueur de chaque touche Tab est définie sur 4 espaces ;
Il est recommandé d'écrire un maximum de 120 caractères. S'il dépasse ce nombre, il doit être enveloppé. Il peut être défini par un éditeur général. //woAjouter une note pour empêcher le défilement horizontal et vertical, Mots clés et Vrai/Faux/NullLa clé de PHP. Les mots doivent être en minuscules et les valeurs booléennes : true, false et null doivent également être en minuscules. Les "mots-clés" PHP suivants doivent être en minuscules :'__halt_compiler', 'abstract', 'and', 'array', 'as', 'break ' , 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue', 'declare', 'default', 'die', 'do', 'echo', ' else', 'elseif', 'vide', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final ' , 'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'interface', ' isset', 'liste', 'espace de noms', 'nouveau', 'ou', 'imprimer', 'privé', 'protégé', 'public', 'require', 'require_once', 'return', 'static ' , 'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while', 'xor'
5. 🎜 >
(1), le nom de la classe est écrit en StudlyCaps ;
Il doit y avoir une ligne vide après la déclaration de l'espace de noms ; Toutes les déclarations d'importation (utilisation) doivent être placées sous la déclaration de l'espace de noms ; Il ne doit y avoir qu'un seul mot-clé d'importation (utilisation) dans une instruction
1 2 3 4 5 6 |
namespace LibDatabases; // 下面必须空格一行
class Mysql {
} |
espace de noms下空一行,才能使用use,再空一行,才能声明class
| <🎜><🎜>namespace LibDatabases; // 下面必须空格一行<🎜><🎜> <🎜><🎜>utilisez FooInterface ; // utilise 必须在namespace 后面声明<🎜><🎜>utilise BarClass comme Bar ;<🎜><🎜>utilise OtherVendorOtherPackageBazClass ; // 下面必须空格一行<🎜><🎜> <🎜><🎜>class Mysql {<🎜><🎜> <🎜><🎜>}<🎜> | ||||
| <🎜><🎜>espace de noms LibDatabaes;<🎜><🎜> <🎜><🎜>la classe Mysql étend ParentClass implémente PDO, DB { // 写一行<🎜><🎜> <🎜><🎜>}<🎜> |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜>4<🎜><🎜>5<🎜><🎜>6<🎜><🎜> 7<🎜><🎜>8<🎜> | <🎜><🎜>espace de noms LibDatabaes;<🎜><🎜> <🎜><🎜>la classe Mysql étend ParentClass implémente PDO, DB { // 写一行<🎜 ><🎜> public $foo = null;<🎜><🎜> private $name = 'yangyi';<🎜><🎜> protected $age = '17';<🎜><🎜>}<🎜> td> |
(3) La méthode doit déclarer sa visibilité, qu'elle soit publique, protégée ou privée, elle ne peut être omise. S'il y a plusieurs paramètres, suivez le premier paramètre avec "," et ajoutez un espace : nom_fonction ($par, $par2, $pa3). Si les paramètres ont des valeurs par défaut, séparez-les par un espace à gauche et à droite de ". =".
| <🎜><🎜>namespace LibDatabaes;<🎜><🎜> <🎜><🎜>class Mysql extends ParentClass implémente PDO, DB { // Écrivez une ligne <🎜><🎜> public getInfo($name, $age, $gender = 1) { // Il y a un espace entre les paramètres. Il y a un espace autour du "=" du paramètre par défaut, et il y a un espace entre ) et { <🎜><🎜> <🎜><🎜> }<🎜><🎜>}<🎜> |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜> < 🎜>4<🎜><🎜>5<🎜><🎜>6<🎜><🎜>7<🎜><🎜>8<🎜><🎜>9<🎜><🎜>10<🎜>< 🎜 >11<🎜> | <🎜><🎜>namespace VendorPackage;<🎜><🎜> <🎜><🎜>classe abstraite ClassName {<🎜><🎜> protected static $foo; // mettre la statique derrière < 🎜><🎜> abstract protected function zim(); // le résumé est mis en premier <🎜><🎜> <🎜><🎜> final public static function bar() { // final est mis en premier, static est en dernier. <🎜><🎜> // Partie du corps de la méthode <🎜><🎜> }<🎜><🎜>}<🎜> |
Interface de contrôle, qui est if else pendant le changement, etc. Ce type de norme d’écriture est souvent sujet à des problèmes, il convient donc de la normaliser.
(1) Si, elseif, else méthode d'écriture, allez simplement au code standard :
| <🎜> php <🎜><🎜>if ($expr1) { // Il y a un espace entre if et (, il y a un espace entre ) et { <🎜><🎜> <🎜><🎜>} elseif ($expr2) { // elesif s'écrit en continu, il y a un espace entre (,) et { Il y a un espace entre <🎜><🎜> <🎜><🎜>} else { // else Il y a un espace à gauche et à droite <🎜><🎜 > <🎜><🎜>}<🎜> |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜> 4<🎜><🎜>5<🎜 ><🎜>6<🎜><🎜>7<🎜><🎜>8<🎜><🎜>9<🎜><🎜>10<🎜><🎜>11 <🎜><🎜>12<🎜> <🎜>13<🎜><🎜>14<🎜><🎜>15<🎜><🎜>16<🎜><🎜>17<🎜> | < td class="code" style="padding :3px;border:1px solid rgb(204,204,204);border-collapse:collapse;margin:0px;background:none;float:none;height:auto;line-height:1.1em ;vertical-align:baseline;width:auto ;font-family:Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;min-height:auto;"><🎜><🎜>switch ($expr) { // Il y a un espace entre switch et (, il y a un espace entre ) et {<🎜><🎜> case 0:<🎜><🎜> echo 'Premier cas, avec une pause'; // Alignement<🎜> <🎜> qui est qui qui est qui qui est qui who who who envoie des SMS, break; // Écrivez break dans une nouvelle ligne et alignez-le également. <🎜><🎜> cas 1 :<🎜><🎜> echo 'Deuxième cas, qui échoue';<🎜><🎜> // pas de pause<🎜><🎜> cas 2 :<🎜><🎜> cas 3 :<🎜><🎜> cas 4 :<🎜><🎜> echo 'Troisième cas, retour au lieu de pause';<🎜><🎜> retour;<🎜><🎜> défaut :<🎜><🎜 > echo 'Cas par défaut';<🎜><🎜> break;<🎜><🎜>}<🎜>
(3)、while,do while 的写法也是类似,上代码:
| <🎜><🎜>while ($expr) { // while 与 ( 之间有一个空格, ) 与 { 之间有一个空格<🎜><🎜 > <🎜><🎜>}<🎜><🎜> <🎜><🎜>faire { // faire 与 { 之间有一个空格<🎜><🎜> <🎜><🎜>} pendant que ($expr) ; // while 左右各有一个空格<🎜> |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜>4<🎜> | <🎜><🎜>pour ($i = 0; $ i < 10; $i++) { // pour 与 ( 之间有一个空格,二元操作符 "="、"<" 左右各有一个空格,) 与 { 之间有一个空格<🎜>< 🎜> <🎜><🎜>}<🎜> |
(5)、foreach的写法
| <🎜><🎜>foreach ($iterable as $key = > $value) { // foreach 与 ( 之间有一个空格,"=>" 左右各有一个空格,) 与 { 之间有一个空格 } |
123456 78 | <🎜>try { // try 右边有一个空格<🎜><🎜> <🎜><🎜>} catch (FirstExceptionType $e) { / / catch 与 ( 之间有一个空格,) 与 { 之间有一个空格<🎜><🎜> <🎜><🎜>} catch (OtherExceptionType $e) { // catch 与 ( ,)与 { 之间有一个空格<🎜><🎜> <🎜><🎜>}<🎜> |
(1), le commentaire de ligne
// doit être suivi d'un espace
S'il y a un caractère non vide devant ; de //, puis // Un espace doit être ajouté devant ;
(2), commentaires de fonction
Le texte des noms de paramètres, des noms d'attributs et des étiquettes doit être aligné et down;
doit être ajouté avant la première étiquette. Une ligne vide;
| <🎜>< ?php<🎜><🎜>/**<🎜><🎜> * Ceci est un exemple de fonction pour illustrer des options de formatage PHP<🎜><🎜> * supplémentaires.<🎜><🎜> *<🎜><🎜> * @param $one Le premier paramètre<🎜> <🎜> * @param int $two Le deuxième paramètre<🎜><🎜> * @param string $trois Le troisième paramètre avec un commentaire plus long<🎜><🎜> * commentaire pour illustrer l'emballage.<🎜><🎜> * @ return void<🎜><🎜> * @author phpgo.cnblogs.com<🎜><🎜> * @license GPL<🎜><🎜> * /<🎜><🎜>function foo($one, $two = 0, $trois = "String") {<🎜><🎜> <🎜> <🎜>}<🎜> |
(1), opérateurs d'affectation (=, +=, etc.), opérateurs logiques (&&, ||), opérateurs de signe égal (==, !=), opérateurs de relations. (<, >, <=, >=), opérateurs au niveau du bit (&, |, ^), connecteurs (.) Il y a un espace à gauche et à droite
(2) , if, else, elseif, while, do, switch, for, foreach, try, catch, enfin, etc. Il y a un espace entre le crochet gauche immédiat "(";
(3), function, Between les différents paramètres de la méthode, il y a un espace après la virgule (",");
(1) Toutes les accolades gauches { ne sont pas renvoyées à la ligne. , et { est serré Il doit y avoir une ligne vide devant le commentaire (commentaire de ligne/commentaire de bloc) du code au même niveau (même indentation
(3), il y a une ligne vide); entre chaque méthode/fonction ;
(4), il y a une ligne vide entre l'instruction d'espace de noms, l'instruction use et l'instruction de classe
(5) , return instruction
If il n'y a qu'une seule ligne de code PHP avant l'instruction return, il n'est pas nécessaire d'avoir une ligne vide avant l'instruction return
S'il y a au moins deux lignes de code PHP avant l'instruction return, ajoutez un espace ; ligne avant l'instruction return
(5), il y a une ligne vide entre if, while, switch, for, foreach, try et d'autres blocs de code et entre d'autres codes ; >
【Résumé de l'exemple de référence】
123
| <🎜> <🎜>namespace LibDatabaes;<🎜><🎜> <🎜><🎜>class Mysql étend ParentClass implémente PDO, DB { // Écrivez une ligne <🎜><🎜> public getInfo($name , $age, $ Gender = 1) { // Il y a un espace entre les paramètres. Il y a un espace autour du "=" du paramètre par défaut, et il y a un espace entre ) et { <🎜><🎜> <🎜><🎜> }<🎜><🎜>}<🎜> |
参考2 :
| <🎜><🎜>namespace VendorPackage;<🎜><🎜> <🎜><🎜>classe abstraite ClassName {<🎜><🎜> protected static $foo ; // static放后面<🎜><🎜> fonction abstraite protégée zim(); // résumé放前面<🎜><🎜> <🎜><🎜> final public static function bar() { // final放前面,static放最后。<🎜><🎜> // 方法主体部分<🎜>< 🎜> }<🎜><🎜>}<🎜> |
参考3:
|
<🎜>namespace libraryModel;<🎜><🎜> <🎜><🎜>utiliser libraryHelperImageHelper;<🎜> <🎜>use libraryLogicUserMainLogic;<🎜><🎜> <🎜><🎜>/**<🎜><🎜> * Modèle de données de la table utilisateur <🎜><🎜> *<🎜><🎜> * @package libraryModel<🎜><🎜>*/<🎜><🎜>class UserMainModel étend BasicModel {<🎜><🎜> /**<🎜><🎜> * Obtenir des informations statistiques sur l'utilisateur<🎜><🎜> *<🎜><🎜> * @param int $userId ID utilisateur<🎜><🎜> * @return array<🎜><🎜>* /<🎜><🎜> fonction publique getUserCard($userId) {<🎜><🎜> $userId = intval($userId);<🎜><🎜> return UserMainLogic::instance()->getUserCard($userId ); } /** * Obtenir des informations utilisateur en fonction de l'identifiant * * @param int $userId UserId * @param string $field Champ d'affichage * @return array*/ fonction publique getByUserId($userId = 0, $field = '*' ) { if (empty($userId)) { return array(); } $where = array('id' => $userId); $info = $this->field($field)->where($where)->find(); if (isset($info['image']) && isset($info['sex'])) { $info['image'] = ImageHelper::GetImageUrl($info['image' ], $info['sex']); } return $info; }} |
参考4:
|
$serv = new swoole_server("127.0.0.1", 9502); // définit la configuration du serveur, nous définissons la configuration task_worker_num supérieure à 0 pour activer la prise en charge des tâches$serv->set(array('task_worker_num' => 4)); // attacher un gestionnaire pour l'événement de réception, expliqué ci-dessus.$serv->on('receive', function($serv , $fd, $from_id, $data) { // nous transmettons une tâche aux tâches des travailleurs en invoquant la méthode task() de $serv // cette méthode renvoie un identifiant de tâche comme identité de cette tâche $task_id = $serv->task($data); echo "Dispath AsyncTask: id=$task_idn";} ); // attacher un gestionnaire pour l'événement de tâche, le gestionnaire sera exécuté dans les tâches de travail.$serv->on('task', function ( $serv, $task_id, $from_id, $data) { // gérer la tâche, faites ce que vous voulez avec $data echo "New AsyncTask[id=$task_id]". PHP_EOL; // une fois la tâche traitée, nous renvoyons les résultats au travailleur appelant. $serv->finish("$data -> OK");}); // attacher un gestionnaire pour l'événement de fin, le gestionnaire sera exécuté dans les serveurs du serveur, le même travailleur a envoyé cette tâche auparavant. $serv->on('finish', function ($serv, $task_id, $data) { echo "AsyncTask[$task_id] Fin : $data".PHP_EOL; }); $serv->start(); |
Résumé : Toutes les accolades gauches { ne coupent pas de nouvelles lignes, et celle immédiatement en dessous { ne doit pas être une ligne vide !
Les spécifications de style de code ci-dessus font référence aux spécifications de Java, JavaScript, Objective-C, Go et d'autres langages de développement !
Le langage Java a un impact profond sur les programmeurs chinois, et la plupart des gens sont encore habitués à laisser l'accolade gauche { sans nouvelle ligne !
Principe d'écriture : Rendre le code compact sans perdre une petite modularité !
La spécification PSR-4 est une nouvelle spécification qui vient d'apparaître Elle régule également le chargement automatique (autoload). PSR-0 sont des spécifications supplémentaires.
Permettez-moi d'expliquer brièvement, principalement les points suivants :
La suppression de PSR-0 est un fractionnement de répertoire dans la manière d'écrire des symboles. , _underscore n'a aucune signification particulière dans les noms de classe complets.
Le nom du fichier de classe doit se terminer par .php.
Le nom de la classe doit être exactement le même que le nom du fichier correspondant, et la casse doit être exactement la même.
Référence :
Recherche de style de code : l'accolade gauche est-elle une nouvelle ligne ? ? ?
Spécification du code PSR-[0-4] en PHP
Lorsqu'il n'y a qu'une seule paire clé-valeur, écrivez-la sur une seule ligne :
|
$where = array('id' => 789);
|
1234 | $where = array( 'id' => 789, 'user_name' => 'phpgo'); |
Recommandations associées :
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!