Attributs PHP : comment utiliser les attributs PHP et créer des classes d'attributs personnalisées – Astuces rapides

WBOY
Libérer: 2024-08-23 16:30:32
original
698 Les gens l'ont consulté

Les attributs PHP ont été introduits dans PHP 8.0. Cette version a marqué une étape importante pour le langage, apportant plusieurs nouvelles fonctionnalités et améliorations, notamment l'introduction d'attributs permettant d'ajouter des métadonnées aux déclarations de code.

La première fois que j'ai dû gérer des attributs, c'était à cause d'un problème dans la bibliothèque PHP de l'Inspector. Vérifiez sur GitHub. Avant d’approfondir la solution, jetons un coup d’œil à ce que sont les attributs et comment ils peuvent être utilisés dans votre code PHP.

Les attributs sont une fonctionnalité puissante qui vous permet d'ajouter des métadonnées à des déclarations telles que des classes, des méthodes ou des propriétés. Ces métadonnées peuvent être récupérées par programme, ouvrant ainsi de nouvelles possibilités pour un code plus propre, plus organisé et efficace.

N'oubliez pas que les attributs n'ont aucun effet au moment de l'exécution. Ils seront disponibles dans les API Reflection pour informer votre application des éléments que vous souhaitez exécuter en fonction des attributs attachés à une classe, une méthode ou une propriété.

Attributs intégrés

PHP est livré avec plusieurs attributs intégrés qui servent à différents objectifs. En voici quelques-uns notables :

@obsolète

Marque une fonction ou une méthode comme obsolète, signalant qu'elle doit être évitée car elle pourrait être supprimée dans les versions futures.

#[Deprecated("Use newFunction() instead")] function oldFunction() { // Function implementation }
Copier après la connexion

@outrepasser

Garantit que la méthode d'une classe enfant est destinée à remplacer une méthode de la classe parent.

class Child extends Parent { #[Override] public function defaultMethod() { // Method implementation } }
Copier après la connexion

Si defaultMethod() finit par changer de nom dans la classe parent, il ne s'agit plus d'un remplacement. Dans ce cas, PHP émettra un avertissement car nous avons explicitement déclaré que nous nous attendons à un remplacement et nous alerterons du désalignement.

Quoi qu'il en soit, un bon IDE devrait nous permettre de ne pas commettre ce genre d'erreurs.

@SuppressWarnings

Supprime les avertissements spécifiques pour un morceau de code particulier.

#[SuppressWarnings("SomeWarning")] function someFunction() { // Function implementation }
Copier après la connexion

Création de classes d'attributs personnalisées

Maintenant, créons une classe d'attributs personnalisée. Ceci est bénéfique lorsque vous souhaitez encapsuler un comportement spécifique dans un attribut.

#[Attribute] class CustomAttribute { public string $message; public function __construct(string $message) { $this->message = $message; } }
Copier après la connexion

Vous pouvez ensuite utiliser cet attribut personnalisé sur différents éléments :

class MyClass { #[CustomAttribute("This is a custom attribute")] public $myProperty; #[CustomAttribute("Another custom attribute")] public function myMethod() { // Method implementation } }
Copier après la connexion

Exemples d'utilisation

Explorons un exemple pratique. Supposons que vous construisiez une application Web et que vous souhaitiez créer un attribut personnalisé pour définir la longueur d'une chaîne :

#[Attribute(Attribute::TARGET_PROPERTY)] class MaxLength { public int $maxLength; public function __construct(int $maxLength) { $this->maxLength = $maxLength; } }
Copier après la connexion

Dans l'exemple ci-dessus, nous avons limité la possibilité d'appliquer l'attribut uniquement aux propriétés de classe. Nous pouvons maintenant l'utiliser dans la classe User :

class User { #[MaxLength(20, message: "Username must be 20 characters or less")] public string $username; // Other properties and methods }
Copier après la connexion

Comme mentionné avant, l'ajout de l'attribut à la propriété n'a aucun impact lors de l'exécution. Mais nous pouvons maintenant récupérer ces informations en utilisant la réflexion pour éventuellement prendre des mesures.

Adoption par les frameworks PHP

Les frameworks PHP les plus utilisés comme Symfony et Laravel adoptent déjà des attributs pour remplacer essentiellement les "Annotations". Dans Symfony 5.2 ou supérieur, vous pouvez déclarer un contrôleur et le connecter à une route en utilisant les attributs :

public class Arrayable implements \ArrayAccess { … public function offsetExists($offset) { return isset($this->data[$offset]); } … }
Copier après la connexion

Depuis PHP 8, la définition de l'interface ArrayAccess a été modifiée comme suit :

PHP Attributes: how to use PHP Attributes and create custom attribute classes – Fast Tips

En utilisant des attributs, ils ont appliqué la déclaration du type de données pour les arguments dans les fonctions de compensation. À l'aide de l'attribut LanguageLevelTypeAware, si l'implémentation ne fournit pas le type de données pour les arguments, elle déclenche un "avertissement de dépréciation".

Mais déclarer le type de données dans les arguments de la fonction rompt la compatibilité avec les anciennes versions de PHP qui ne prennent pas en charge la déclaration du type de données des arguments.

Comme il s'agissait simplement d'un avertissement concernant des modifications futures, nous avons résolu le problème avec un autre attribut PHP intégré pour supprimer l'avertissement :

public class Arrayable implements \ArrayAccess { … #[\ReturnTypeWillChange] public function offsetExists($offset) { return isset($this->data[$offset]); } … }
Copier après la connexion

L'attribut ReturnTypeWillChange indique simplement à PHP que nous sommes informés des futurs changements dans le langage et que nous avons déjà planifié les mises à jour nécessaires.

Pour ce changement en particulier, ils seront définitivement implémentés dans PHP 9.

N'oubliez pas d'utiliser les attributs judicieusement, en gardant votre base de code propre et bien documentée. Ceci est particulièrement crucial dans le développement de produits SaaS où l'évolutivité, la maintenabilité et l'efficacité sont primordiales.

Nouveau comme inspecteur ? Surveillez votre candidature gratuitement

Inspector est un outil de surveillance de l'exécution de code spécialement conçu pour les développeurs de logiciels. Vous n'avez pas besoin d'installer quoi que ce soit au niveau du serveur, installez simplement lepackage composeret vous êtes prêt à partir.

Contrairement à d'autres plates-formes complexes tout-en-un, Inspector est extrêmement simple et compatible avec PHP. Vous pouvez essayer notre package Laravel ou Symfony.

Si vous recherchez une automatisation efficace, des informations approfondies et la possibilité de transférer des alertes et des notifications dans votre environnement de messagerie, essayez Inspector gratuitement. Enregistrez votre compte.

Ou apprenez-en plus sur le site : https://inspector.dev

PHP Attributes: how to use PHP Attributes and create custom attribute classes – Fast Tips

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!

source:dev.to
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!