Table des matières
À quoi ressemblent les attributs?
En quoi les attributs sont-ils différents de PHPDOC?
Comment définir et utiliser des attributs personnalisés
Étape 1: Définissez la classe d'attribut
Étape 2: Appliquez l'attribut
Où sont les attributs couramment utilisés?
Quelques choses à garder à l'esprit
Maison développement back-end tutoriel php Quels sont les attributs (annotations) dans PHP 8?

Quels sont les attributs (annotations) dans PHP 8?

Jun 22, 2025 am 12:54 AM
PHP 8

Les attributs PHP 8 ajoutent des métadonnées aux éléments de code de manière structurée. 1. Ils sont attachés au-dessus des classes, des méthodes, etc. en utilisant la syntaxe # [], telle que # [Route ('/ home')] pour définir les itinéraires; 2. Il est plus sûr que PHPDOC, avec la vérification de type et la vérification du temps de compilation; 3. Les attributs personnalisés doivent définir des classes et s'appliquer, tels que l'utilisation de ReflectionAttribute pour créer des attributs de journal LOGEXECUTION; 4. Couramment utilisé dans les cadres pour gérer le routage, la vérification, la cartographie ORM et d'autres tâches, l'amélioration de la lisibilité du code et la séparation des configurations logiques; 5. Il est accessible par réflexion, mais une utilisation excessive doit être évitée pour éviter d'affecter la clarté du code.

Quels sont les attributs (annotations) dans PHP 8?

PHP 8 a introduit une nouvelle fonctionnalité puissante appelée Attributs (également appelée annotations dans d'autres langues comme Java ou Python). Ils fournissent un moyen structuré et réutilisable d'ajouter des métadonnées aux classes, méthodes, propriétés, fonctions, etc. - toutes directement dans le code à l'aide d'une syntaxe propre.

En bref, les attributs vous permettent de "joindre" des informations supplémentaires à vos éléments de code sans affecter leur logique. Cela peut être utilisé pour des choses comme le routage dans les cadres, les règles de validation, les mappages ORM, etc.


À quoi ressemblent les attributs?

Les attributs sont écrits à l'aide de la syntaxe #[AttributeName] placée au-dessus de l'élément qu'ils annotent. Voici un exemple de base:

 # [Route ('/ home')]
fonction home () {
    Echo «Bienvenue!»;
}

Dans ce cas, #[Route('/home')] est un attribut qui indique une partie de l'application (comme un routeur) comment gérer la fonction home() .

Vous pouvez également utiliser plusieurs attributs:

 # [Cacheable]
# [Méthode ('get')]
fonction getData () {
    return fetchData ();
}

Chaque attribut peut avoir des arguments qui lui sont transmis, tout comme les appels de fonction. La signification exacte de ces arguments dépend de ce que fait l'attribut.


En quoi les attributs sont-ils différents de PHPDOC?

Avant les attributs, les développeurs ont souvent utilisé des commentaires PHPDOC pour atteindre des objectifs similaires:

 / **
 * @Route ("/ home")
 * @Method ("Get")
 * /
fonction home () {
    // ...
}

Alors que PHPDOC fonctionne, il a des limites:

  • Ce n'est pas un type de type - tout est une chaîne.
  • Il n'y a aucune application de l'utilisation correcte.
  • Vous devez analyser les commentaires manuellement ou avec des outils.

Les attributs résolvent ces problèmes en faisant partie de la syntaxe linguistique. Ils sont validés au moment de la compilation, prennent en charge le typage approprié et sont plus faciles à traiter par programme.


Comment définir et utiliser des attributs personnalisés

La création de votre propre attribut implique deux étapes: définir la classe d'attribut et l'appliquer quelque part.

Étape 1: Définissez la classe d'attribut

Utilisez la classe Attribute fournie par PHP (à partir de l'API ReflectionAttribute ):

 Utiliser l'attribut;

#[Attribut]
classe LOGEXECUTION {
    fonction publique __construct (
        public string $ message = 'fonction exécutée'
    ) {}
}

Cela définit un attribut qui peut être attaché à n'importe quel élément.

Étape 2: Appliquez l'attribut

Appliquez-le maintenant à une fonction:

 # [LOGEXECUTION (Message: «Fonction de connexion utilisateur»)]
Fonction LoginUser (String $ username) {
    Echo "Connexion à $ nom d'utilisateur \ n";
}

Ensuite, en utilisant la réflexion, vous pouvez lire l'attribut et faire quelque chose d'utile - comme enregistrer le message après l'exécution de la fonction.


Où sont les attributs couramment utilisés?

Les frameworks et les bibliothèques utilisent fortement les attributs car ils permettent une séparation propre entre la logique métier et la configuration.

Voici quelques cas d'utilisation courants:

  • Routage - cartographie des URL vers les méthodes du contrôleur
  • Validation - Spécification des contraintes de données pour les formulaires ou les API
  • Sérialisation / désérialisation - Contrôlant comment les objets sont convertis en JSON ou XML
  • Injection de dépendance - Services de marquage ou points d'injection
  • ORMS - Tableaux et colonnes de base de données de cartographie vers les classes et les propriétés

Par exemple, dans Symfony ou Laravel, vous pourriez voir quelque chose comme:

 # [Route ('/ Users / {id}', méthodes: ['get'])]
Fonction publique Show (int $ id) {
    Utilisateur de retour :: find ($ id);
}

Cela indique au framework comment acheminer les demandes HTTP entrantes à cette méthode.


Quelques choses à garder à l'esprit

  • Les attributs peuvent cibler des éléments de code spécifiques à l'aide de drapeaux lors de leur définition. Par exemple, pour permettre une utilisation sur les fonctions:

     # [Attribut (attribut :: cible_function)]
  • Vous pouvez accéder aux attributs via la réflexion ( ReflectionClass , ReflectionMethod , etc.) pour lire et agir sur eux.

  • Bien que les attributs soient très flexibles, les exagérer peut rendre votre code plus difficile à suivre s'il n'est pas bien organisé.

  • Tous les projets n'ont pas besoin d'attributs personnalisés - mais ils sont super pratiques dans des applications ou des cadres plus importants.


  • Alors oui, les attributs de PHP 8 nous donnent une façon moderne, propre et puissante de travailler avec des métadonnées dans notre code. Ils ne sont pas difficiles à comprendre une fois que vous voyez comment ils s'intègrent dans des exemples du monde réel - et ils ont définitivement battu les commentaires d'analyse à la main.

    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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Guide de construction d'Agnes Tachyon | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Guide de construction de Grass Wonder | Uma musume joli derby
2 Il y a quelques semaines By Jack chen
Pic comment émoter
4 Il y a quelques semaines By Jack chen

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les arguments nommés dans PHP 8? Quels sont les arguments nommés dans PHP 8? Jun 19, 2025 pm 06:05 PM

NAMBALLAGES INSIMPHP8ALLOWPASSINGVALUESTOAFONCTIONNEURSPECIFICATIONS THEPARAMETERNAMEDSEADOFRELYINGORAMETERORDORDORDORDR

Quel est le type de retour statique dans PHP 8? Quel est le type de retour statique dans PHP 8? Jun 24, 2025 am 12:57 AM

TheStaticreTurnTypeInphp8MeanThemethoDisexPectedToreRurnanInstanceoftheClassit'sCalledon, y comprisanychildClass.1.EtenablesLaStaticBinding, assuranttheredvalueMatchestheLlingClass'Stype..com.ParedToselEl

Que sont la promotion des propriétés du constructeur dans PHP 8? Que sont la promotion des propriétés du constructeur dans PHP 8? Jun 19, 2025 pm 06:45 PM

ConstructorPropertyPromotionInphp8AllowsAutomaticCreationandAsssignmentofClassproperties est en train de dire de la construction de l'apprustaire.InSteadofMumberyAssigingAproperTropertyInTeTheConstructor, DeveloperscanAddanAccessModifier (public, protégé, orprié) Totheparam

Que sont les types mixtes dans PHP 8? Que sont les types mixtes dans PHP 8? Jun 21, 2025 am 01:02 AM

Le type mixte de PHP8 permet des variables, des paramètres ou des valeurs de retour pour accepter tout type. 1. Le mixtes convient aux scénarios qui nécessitent une forte flexibilité, tels que le middleware, le traitement dynamique des données et l'intégration du code hérité; 2. Il est différent des types d'union car il couvre tous les types possibles, y compris les nouveaux types à l'avenir; 3. Soyez prudent lorsque vous les utilisez pour éviter d'affaiblir la sécurité des types, et il est recommandé d'expliquer les types attendus en conjonction avec PHPDOC. L'utilisation rationnelle de mixtes peut améliorer les capacités d'expression du code tout en conservant les avantages des invites de type.

Qu'est-ce que la compilation JIT (juste à temps) dans PHP 8? Qu'est-ce que la compilation JIT (juste à temps) dans PHP 8? Jun 20, 2025 am 12:57 AM

Jitinphp8 improveSperformanceBy compilantfrementexecutedcodeintomachinecoatTrutime.insteadoferpretingOpcodeachtime, jitidentieShototsectionofcode, compiltesthentonativemachinecode, cachesitforreuse, andrecestreptureveread.ithelpostimosti

Que sont les expressions de correspondance dans PHP 8? Que sont les expressions de correspondance dans PHP 8? Jun 21, 2025 am 01:03 AM

L'expression de correspondance de PHP8 fournit une cartographie conditionnelle plus propre par une comparaison stricte. 1. Utilisez une égalité stricte (===) pour éviter la conversion de type; 2. Aucune déclaration de rupture n'est requise pour empêcher la pénétration accidentelle; 3. La valeur de retour directe peut être attribuée aux variables; 4. Prise en charge des résultats de la fusion et du partage de la multi-conditions. Convient pour les scénarios d'entrée et de sortie précis de correspondance et de sortie, tels que le traitement du code d'état HTTP; Pas adapté aux contrôles de portée ou aux comparaisons lâches.

Quels sont les attributs (annotations) dans PHP 8? Quels sont les attributs (annotations) dans PHP 8? Jun 22, 2025 am 12:54 AM

Les attributs PHP8 ajoutent des métadonnées aux éléments de code grâce à des méthodes structurées. 1. Ils sont attachés au-dessus des classes, des méthodes, etc. en utilisant la syntaxe # [], telle que # [Route ('/ home')] pour définir les itinéraires; 2. Il est plus sûr que PHPDOC, avec la vérification de type et la vérification du temps de compilation; 3. Les attributs personnalisés doivent définir des classes et s'appliquer, tels que l'utilisation de ReflectionAttribute pour créer des attributs de journal LOGEXECUTION; 4. Couramment utilisé dans les cadres pour gérer le routage, la vérification, la cartographie ORM et d'autres tâches, améliorant la lisibilité du code et séparant les configurations logiques; 5. Il est accessible par réflexion, mais une utilisation excessive doit être évitée pour éviter d'affecter la clarté du code.

Quelles sont les améliorations des performances en PHP 8 par rapport à PHP 7? Quelles sont les améliorations des performances en PHP 8 par rapport à PHP 7? Jun 27, 2025 am 12:51 AM

L'amélioration des performances de PHP8 provient principalement du compilateur JIT nouvellement introduit et de l'optimisation du moteur Zend, mais les avantages dans les applications réelles varient selon le scénario. 1. Le compilateur JIT compile un peu de code dans le code machine à l'exécution, améliorant considérablement les performances des scripts CLI ou des API à long terme, mais a un effet limité dans les demandes Web de courte durée; 2. Opcache améliore et améliore les fonctions de mise en cache et de préchargement d'Opcode, réduisant les E / S de disque et l'analyse des frais généraux, en particulier pour les cadres tels que Laravel ou Symfony; 3. Optimisations internes multiples telles que les opérations de chaîne et de réseau plus efficaces, une utilisation de la mémoire plus petite, etc. Bien que chaque amélioration soit faible, elle s'accumule en petites quantités; 4. L'amélioration réelle des performances dépend du scénario d'application, PHP8 peut être rapide 10 dans les tâches à forte intensité informatique.

See all articles