En raison de la flexibilité de PHP, de nombreuses personnes ne prêtent pas attention à une bonne spécification de code lors de l'écriture du code, ce qui donne l'impression que le code PHP déjà flexible est désordonné. En fait, PSR-1 et PSR-2 dans la spécification PSR ont été. défini. Il existe certaines spécifications dans le codage PHP Tant que nous respectons ces spécifications, nous pouvons écrire un code très beau et soigné même si nous utilisons un langage de script flexible. Tout d'abord, examinons les spécifications PSR qui ont été adoptées, puis expliquons brièvement certaines exigences spécifiques des spécifications PSR-1 et PSR-2
PSR réussi :
Spécification de codage de base PSR-1 :
1 . Ouvrir et fermer les balises
Tout d'abord, le code PHP doit commencer par la balise
2. Effets secondaires
Les fichiers PHP déclarent des classes, des interfaces, des fonctions, etc., ou effectuent des opérations logiques (telles que comme la lecture et l'écriture de fichiers ou l'envoi de résultats au navigateur), mais pas les deux.
3. Dénomination
La dénomination des classes doit respecter la convention de dénomination des cas chameaux en commençant par un cas majuscule. En d’autres termes, les noms de classes doivent commencer par une lettre majuscule. Il n'est pas obligatoire de nommer les propriétés, mais elles doivent être cohérentes. Les noms de méthodes doivent être conformes à la convention de dénomination camelCase commençant par des minuscules. Toutes les lettres des constantes de classe doivent être en majuscules et les mots séparés par des traits de soulignement.
Spécification du style de codage PSR2 :
1. PSR-1 nécessite que le code PHP commence par , mais doivent se terminer par une ligne vide.
2. Une ligne vide doit être insérée après la déclaration de l'espace de noms, et il doit également y avoir une ligne vide après le bloc de déclaration d'utilisation. Ne faites pas plusieurs instructions d'utilisation dans la même ligne de code.
3. Le début et la fin de la classe
Le mot-clé class, le nom de la classe et les mots-clés extends et Implements doivent être sur la même ligne. Si une classe implémente plusieurs interfaces, les noms d'interface peuvent figurer sur la même ligne de la déclaration de classe ou occuper des lignes distinctes. Si vous choisissez de placer ces noms d'interface sur plusieurs lignes, le premier nom d'interface doit être sur sa propre ligne et ne pas suivre le mot clé Implements. L'accolade ouvrante ({) d'une classe doit être écrite sur sa propre ligne après la déclaration de la fonction, et l'accolade fermante (}) doit également être écrite sur sa propre ligne après le corps de la classe. Autrement dit, une déclaration de classe ressemblerait à ceci :
class EarthGame extends Game implements Playable, Savable { //类体 }
Vous pouvez également mettre le nom de la classe sur la même ligne que la déclaration de classe.
class EarthGame extends Game implements Playble, Savable { //类体 }
4. Déclaration d'attribut
Chaque attribut doit avoir un modificateur d'accès (public, privé ou protégé). Les attributs ne peuvent pas être déclarés à l'aide du mot-clé var. La spécification des noms d'attributs est déjà couverte dans PSR-1 : vous pouvez utiliser des traits de soulignement, des noms camelCase minuscules ou des noms camelCase majuscules, mais doivent rester cohérents. (Personnellement, je recommande d'utiliser la casse camel minuscule pour les attributs)
5. Le début et la fin de la méthode
Toutes les méthodes doivent avoir des modificateurs d'accès (publics, privés ou protégés). Le modificateur d'accès doit être après abstract ou final et avant static. Les paramètres de méthode avec des valeurs par défaut doivent être placés à la fin de la liste des paramètres.
Déclaration sur une seule ligne
L'accolade ouvrante ({) de la méthode doit être écrite sur sa propre ligne après le nom de la méthode, et l'accolade fermante (}) doit également être écrite seule ligne après le corps de la méthode (suivant directement la méthode après le code). Les listes de paramètres de méthode ne doivent pas commencer ni se terminer par un espace (c'est-à-dire qu'elles doivent suivre les parenthèses qui les entourent). Pour chaque paramètre, il doit y avoir une virgule après le nom du paramètre (ou la valeur par défaut) et un espace après la virgule. Cela peut sembler compliqué, comme indiqué ci-dessous :
final public static function generateTile(int $diamondCount, bool $polluted = false) { //方法体 }
Déclaration multiligne
Une déclaration de méthode sur une seule ligne n'est pas pratique si la méthode a de nombreux paramètres. À ce stade, nous pouvons diviser la liste des paramètres afin que chaque paramètre (y compris le type, la variable de paramètre, la valeur par défaut et la virgule) se trouve sur sa propre ligne en retrait. Dans ce cas, la parenthèse fermante doit être placée sur la ligne après la liste des paramètres, alignée avec le début de la déclaration de la méthode. L'accolade ouvrante ({) doit suivre la parenthèse fermante sur la même ligne, séparée par un espace. Le corps de la méthode doit commencer sur une nouvelle ligne. Encore une fois, cela peut paraître compliqué, mais les exemples suivants devraient vous aider à comprendre cette règle.
public function __construct( int $size, string $name, bool $warparound = false, bool $aliens = false ) { //方法体 }
6. Lignes et indentation
Le code doit être indenté en utilisant 4 espaces au lieu de tabulations. Nous pouvons vérifier les paramètres de l'éditeur et le configurer pour qu'il utilise 4 espaces au lieu de tabulations lorsque la touche de tabulation est enfoncée. Chaque ligne de code ne doit pas dépasser 120 caractères.
7、方法与函数调用
方法名称和开始圆括号之间不能有空格。方法调用中的参数列表的规则与方法声明中的参数列表规则相同。换言之,对于单行调用,开始圆括号后或结束圆括号前不能有空格。每个参数之后应该紧跟一个逗号,下一个参数前应该有一个空格。如果需要使用多行代码进行方法调用,那么每个参数应该自成一行并缩进,而且结束圆括号也应该自成一行。
$earthGanme = new EarthGame( 5, 'earth', true, true ); $earthGame::generateTile(5, true);
8、流程控制
流程控制关键字(if、for、while等)后面必须紧跟一个空格。但是,开始圆括号后不能有空格。同样,结束圆括号前不能有空格。因此内容应该紧贴在括号内的。与类和(单行)函数声明相比,流程控制代码的开始花括号应该与结束圆括号在同一行。结束花括号应该自成一行。以下是一个简单的示例。
$title = [];for ($x = 0; $x < $diamondCount; $x++) { if ($polluted) { $title[] = new PollutionDecorator(new DiamondDecorator(new Plains())); } else { $title[] = new DiamondDecorator(new Plains()); } }
想了解更多相关问题请访问PHP中文网: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!