Explication détaillée des spécifications du standard PHP

小云云
Libérer: 2023-03-21 17:30:01
original
3184 Les gens l'ont consulté

Cet article partage principalement avec vous l'explication détaillée des spécifications du standard PHP, dans l'espoir d'aider tout le monde.

psr0 : la norme de chargement automatique

a été remplacée par psr4, vous pouvez en apprendre davantage

Obligatoire : espace de noms et format de classe entièrement qualifiés. : ()*
2 Obligatoire : chaque espace de noms doit avoir un espace de noms de niveau supérieur (Nom du fournisseur).
3. Chaque espace de noms peut contenir n'importe quel nombre de sous-espaces de noms.
4. Lorsque le système de fichiers charge le fichier source, le séparateur entre les espaces de noms sera converti en DIRECTORY_SEPARATOR.
5. Les traits de soulignement _ dans le nom de la classe seront convertis en DIRECTORY_SEPARATOR. _ n'a pas de signification particulière.
6. Les espaces de noms et les classes entièrement qualifiés verront le suffixe .php ajouté lors du chargement des fichiers source à partir du système de fichiers.
7. Les casses de lettres dans un espace de noms entièrement qualifié peuvent être n'importe quelle combinaison.

Exemple

\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
\Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
\Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php

\namespace\package\Class_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php
\namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php
Copier après la connexion

psr1 : Spécifications de programmation de base

Obligatoire : La balise php doit être . Obligatoire : le fichier doit être codé en UTF-8 sans BOM 3. Le code dans le fichier php ne peut être que des déclarations telles que la définition de classes, de fonctions, de constantes, etc., ou il ne peut s'agir que de quelques opérations secondaires 4. Espaces de noms et. les classes doivent répondre à psr0 ou psr45 . Le nom de la classe doit être la spécification StudlyCaps [nommage CamelCase commençant par une majuscule] 6. Toutes les lettres des constantes de la classe doivent être en majuscules et séparées par des traits de soulignement 7. Le nom de la méthode doit être la spécification de dénomination camelCase.

Explication

副操作包含却不仅限于:生成输出、直接的 require 或 include、连接外部服务、
修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写文件等。<?php// side effect: change ini settingsini_set(&#39;error_reporting&#39;, E_ALL);// side effect: loads a fileinclude "file.php";// side effect: generates outputecho "<html>\n";// declarationfunction foo(){
    // function body}<?php// declarationfunction foo(){
    // function body}// conditional declaration is not a side effectif (! function_exists(&#39;bar&#39;)) {    function bar()
    {
        // function body
    }
}
Copier après la connexion

La spécification du style de programmation psr2

est une extension de psr1

1 Doit suivre psr12. 3. Caractères d'espacement. Le nombre de caractères par ligne doit être limité à 80. En théorie, il ne doit pas dépasser 120, mais il ne doit pas y avoir de limite stricte. 4. Une ligne vide doit être insérée après chaque déclaration d'espace de noms et utiliser un bloc de déclaration. Toutes les utilisations doivent être déclarées après l'espace de noms. 5. Les accolades ouvrantes des méthodes et des classes doivent être écrites sur une nouvelle ligne après leur déclaration. 6. abstract et final doivent être avant les modificateurs private, protected et public, et static doit être déclaré après le modificateur d'accès. 7. Il doit y avoir un espace après le mot-clé de la structure de contrôle, mais il ne doit pas y en avoir lors de l'appel d'une méthode ou d'une fonction. 8. L'accolade ouvrante d'une structure de contrôle doit être écrite sur la même ligne que la déclaration. 9. Il ne doit y avoir aucun espace après la parenthèse gauche d’ouverture et avant la parenthèse droite de fermeture de la structure de contrôle. 10. Tous les fichiers PHP doivent utiliser Unix LF comme terminateur de ligne.
11. Tous les fichiers PHP doivent se terminer par une ligne vide. 12. Il ne doit y avoir aucun espace supplémentaire après une ligne non vide. 13. Il ne doit pas y avoir plus d'une déclaration par ligne. 14. Tous les mots-clés PHP doivent être en minuscules.

Instance

<?phpnamespace Vendor\Package;use FooInterface;use BarClass as Bar;use OtherVendor\OtherPackage\BazClass;class Foo extends Bar implements FooInterface{
    public function sampleMethod($a, $b = null)
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }    final public static function bar()
    {
        // method body
    }
}
Copier après la connexion

psr4 chargé automatiquement

()*
Remarque : n'est plus appelé après psr4 Espace de noms complet, mais nom de classe complet. 1. Un nom de classe complet doit avoir un espace de noms de niveau supérieur, appelé « espace de noms de fournisseur ». 2. Un nom de classe pleinement qualifié peut avoir un ou plusieurs sous-espaces de noms. 3. Un nom de classe complet doit avoir un nom de classe final ; . Les traits de soulignement n'ont aucune signification particulière. 5. Le nom complet de la classe peut être composé de lettres majuscules et minuscules. 6. Tous les noms de classe doivent être sensibles à la casse. 7. Dans le nom complet de la classe, supprimez le premier séparateur d'espace de noms, et le ou les espaces de noms et sous-espaces de noms consécutifs précédents sont utilisés comme « préfixe d'espace de noms », qui doit correspondre à au moins un « répertoire de base de fichiers » 8. Le sous-espace de noms qui suit immédiatement le préfixe de l'espace de noms doit correspondre au "répertoire de base de fichiers" correspondant, et le délimiteur d'espace de noms sera utilisé comme délimiteur de répertoire. 9. Le nom de la classe à la fin doit avoir le même nom que le fichier correspondant avec le suffixe .php. 10. L'implémentation du chargeur automatique ne doit pas générer d'exceptions, ne doit déclencher aucun niveau de messages d'erreur et ne doit pas avoir de valeur de retour.

Exemple

完整类名 命名空间前缀 文件基目录 文件路径
AcmeLogWriterFile_Writer AcmeLogWriter ./acme-log-writer/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/includes/Zend/ /usr/includes/Zend/Acl.php

Recommandations associées :

Exemple d'utilisation de la classe standard PHP (stdclass)

Bibliothèque standard PHP SPL

Programme de génération de code de vérification standard 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal