Site icon Blog ARC Optimizer

Attributs PHP dans Drupal : moderniser les définitions de plugins

Attributs PHP dans Drupal : moderniser les définitions de plugins


Introduction

Dans le moderne développement webles métadonnées jouent un rôle crucial en fournissant des informations supplémentaires sur le code, permettant ainsi une fonctionnalité plus dynamique et flexible. Dans le cadre de Drupal, ces métadonnées est souvent utilisé pour définir des classes de plugins telles que des blocs, des services, des abonnés aux événements et des informations de routage. Traditionnellement, ces métadonnées étaient ajoutées à l’aide d’annotations, ce qui constituait un moyen pratique d’attacher des données aux classes et aux méthodes via des commentaires PHPDoc. Cependant, avec l’introduction de PHP 8, les attributs ont été introduits comme une alternative plus native et plus efficace aux annotations. Même si les annotations sont encore largement utilisées, notamment dans le code existant, les attributs sont de plus en plus adoptés pour les nouveaux projets, notamment dans Drupal10 et versions ultérieures.

Qu’est-ce que l’annotation dans Drupal ?

Les annotations dans Drupal sont une forme de métadonnées ajoutées aux classes via PHPDoc commentaires. Ils sont utilisés pour fournir des informations supplémentaires sur la classe, comme son type ou ses options de configuration, sans affecter la logique du code lui-même.

Exemple
Voici un exemple de la façon dont les annotations sont utilisées dans Drupal pour définir un plugin de bloc :

<?php

namespace Drupal\custom_block\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
* Provides a 'Custom Block' Block.
*
* @Block(
* id = "custom_block",
* admin_label = @Translation("Custom Block"),
* category = @Translation("Custom")
* )
*/
class CustomBlock extends BlockBase 
{ /**
   * 
     {@inheritdoc} 
   */ 
public function build() { 
return ['#markup' => $this->t('Hello, This block uses Annotation!')];
}
}

Dans cet exemple, l’annotation @Block fournit des métadonnées pour la classe CustomBlock, telles que l’ID du bloc, l’étiquette d’administrateur et la catégorie.

Pourquoi utilisons-nous les annotations dans Drupal ?

Les annotations ont été utilisées dans Drupal car elles offrent un moyen flexible de définir des métadonnées qui n’encombrent pas le code. Ils permettent aux développeurs de déclarer facilement les types et configurations de plugins, tels que les blocs, les vues et les contrôleurs, sans avoir besoin de fichiers de configuration complexes. Les annotations rendent le code plus lisible et, surtout, elles fonctionnent bien avec le système de plugins Drupal.

Que sont les attributs PHP ?

Introduits dans PHP 8, les attributs constituent un moyen puissant et natif d’ajouter des métadonnées aux classes, méthodes, propriétés et fonctions. Elles offrent une alternative plus structurée et plus robuste aux annotations traditionnelles, qui reposent sur des commentaires docblock et nécessitent une analyse supplémentaire. Avec les attributs, les métadonnées deviennent partie intégrante du code lui-même, permettant à PHP de le traiter de manière native. Les attributs sont définis à l’aide d’une syntaxe spéciale qui utilise #[…]ce qui les rend compacts et plus faciles à lire. Cette intégration native réduit le risque d’erreurs et améliore les performances puisque PHP n’a plus besoin de s’appuyer sur des bibliothèques externes ou des analyseurs personnalisés pour interpréter les métadonnées.

Comment utiliser les attributs PHP

Voici à quoi ressemblerait le même exemple de plugin de bloc en utilisant les attributs PHP 8 :

<?php 

namespace Drupal\custom_block\Plugin\Block; 

use Drupal\Core\Block\BlockBase;

#[Block(
id: "custom_block",
admin_label: "Custom Block",
category: "Custom"
)]
class CustomBlock extends BlockBase {
 /** 
  * {@inheritdoc} 
  */
public function build() {
return ['#markup' => $this->t('Hello, This block uses Attributes!')];
}
}

Dans cet exemple, le #[Block] L’attribut sert le même objectif que l’annotation @Block mais d’une manière plus standardisée et plus efficace.

Pourquoi utiliser des attributs plutôt que des annotations ?

Les attributs offrent plusieurs avantages par rapport aux annotations :

  • Performance: Étant donné que les attributs sont natifs de PHP, ils sont analysés plus rapidement que les annotations, qui nécessitent des bibliothèques externes comme Doctrine pour être analysées.
  • Vérification des erreurs : Les attributs sont validés par PHP lui-même, tandis que les annotations reposent sur des analyseurs externes et peuvent être sujettes à des erreurs ou des fautes de frappe.
  • Syntaxe plus propre : Les attributs offrent un moyen plus compact et plus lisible de définir des métadonnées par rapport aux commentaires d’annotation détaillés.
  • Pratique PHP moderne : Les attributs s’alignent sur les normes PHP modernes, rendant votre code plus propre et évolutif.

Annotations et attributs PHP : changements de comparaison

1. Syntaxe

  • Annotations : utilisez les commentaires docblock (par exemple, /** … */), une partie des commentaires dans le code.
  • Attributs PHP : utilisez la syntaxe PHP native avec des crochets (par exemple, #[AttributeName]), une partie du code lui-même.

2. Performances

  • Annotations : plus lentes, car elles nécessitent une analyse des commentaires lors de la découverte du plugin.
  • Attributs PHP : plus rapides, car ils sont supportés nativement par PHP et analysés directement par le moteur PHP.

3. Vérification des erreurs

  • Annotations : sujettes aux erreurs dues au manque de validation ; ce ne sont que des commentaires.
  • Attributs PHP : validés par l’analyseur PHP, réduisant le risque d’erreurs et améliorant la sécurité des types.

4. Lisibilité

  • Annotations : celles-ci peuvent devenir encombrées, notamment avec plusieurs lignes de métadonnées.
  • Attributs PHP : syntaxe plus propre et plus concise, améliorant la lisibilité et facilitant la maintenance du code.

5. Compatibilité

  • Annotations : Compatible avec les anciennes versions de PHP, couramment utilisées dans Drupal 7/8.
  • Attributs PHP : nécessitent PHP 8+, ce qui les rend adaptés à Drupal 10 et aux versions ultérieures.

Conclusion

Avec l’introduction des attributs PHP 8, le processus de définition des métadonnées dans Drupal 10/11 est devenu plus efficace et standardisé. Les attributs offrent non seulement de meilleures performances, mais améliorent également la clarté du code et réduisent le risque d’erreurs. Pour les développeurs Drupal qui cherchent à garder une longueur d’avance, l’adoption d’attributs pour le développement de plugins est la voie à suivre. À mesure que Drupal continue d’évoluer, les attributs joueront un rôle clé dans la simplification et la modernisation du processus de développement.

À la recherche de Services de développement Drupal pour votre entreprise ? Parler à nos experts.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link
Quitter la version mobile