logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Débuter - informations de référence (Drupal 8)

05/07/2025, by Ivan

Menu

Drupal 8 utilise un certain nombre de fonctionnalités avancées du langage PHP et des bibliothèques tierces complexes pour fournir aux développeurs externes l'API la plus avancée de tous les CMS disponibles. Bien que les développeurs expérimentés de Drupal 7 puissent remarquer certains changements importants, la majeure partie de la structure de base restera familière.

Si certains des matériaux présentés dans le guide étape par étape pour développeurs de modules D8 vous sont nouveaux, le contenu ci-dessous peut vous aider. Cependant, une connaissance exhaustive n'est pas requise pour passer à la description du module D8.

Programmation orientée objet

La POO, bien qu'initialement intimidante, est maintenant bien reconnue comme la meilleure approche.
Pour un aperçu général des bonnes pratiques PHP, consultez phptherightway.com. Drupal n’utilise pas tous les outils et méthodes documentés là-bas, mais c’est une excellente introduction à PHP et à de nombreuses fonctionnalités du langage.

Actualisez vos connaissances en POO en lisant la documentation officielle PHP sur les classes et objets, ainsi que certains des bons tutoriels suivants :

Drupal 8 utilise également certains patrons de conception courants, et vous voudrez vous assurer d’avoir une compréhension générale de ceux-ci :

Patron de fabrique et liaison statique tardive
Patrons de conception logicielle (sur Wikipédia)
Fondations de la programmation : patrons de conception (sur lynda.com)
@todo : ajouter des liens supplémentaires vers la documentation des patrons que nous utilisons ...

Espaces de noms PHP

Si vous n’êtes pas familier avec le concept d’espace de noms en PHP, essayez certains des articles suivants :

Dans la plupart des cas, le code Drupal utilise un espace de noms basé sur le module auquel il appartient.

Exemple : espace de noms pour block.module

namespace Drupal\block;

@todo : expliquer pourquoi parfois c’est Drupal\, parfois Drupal\\[Controller|Form|Plugin|etc.] et comment savoir lequel utiliser...

Pour en savoir plus, consultez les standards d’espace de noms Drupal. Plus d’informations sur l’utilisation de PSR-4 dans Drupal ici. Un logiciel de codage bien configuré devrait reconnaître les espaces de noms PHP et fournir de l’aide et de l’auto-complétion.

Injection de dépendances

Bien que l’injection de dépendances soit en fait un autre patron de conception OOP, nous le mentionnons ici car Drupal 8 utilise intensivement ce concept, et il est important d’avoir une compréhension de base pour accéder et utiliser beaucoup d’API principales.

Lisez sur l’injection de dépendances en PHP, ainsi que d’autres articles liés sur cette page. En particulier cet article, car Drupal utilise intensivement le conteneur de services Symfony auquel il fait référence.

Voir aussi :

Symfony

Symfony est un framework PHP dont Drupal s’est inspiré pour réduire la duplication de code dans différents projets PHP. Une grande partie du code que Drupal 8 utilise pour gérer le routage, les sessions et le conteneur de services, entre autres, est empruntée à Symfony 2 (et au fur et à mesure du développement de Drupal 8, migrée vers Symfony 3). Pour en savoir plus sur les raisons de ce choix, consultez cette présentation du principal contributeur alexpott.

Consultez le livre sur Symfony 2 et rafraîchissez vos connaissances Symfony. Bien que tout ne soit pas nécessaire pour comprendre Drupal, savoir comment Symfony fonctionne fera de vous un meilleur développeur Drupal et PHP. Vous pourriez aussi être intéressé par le glossaire Symfony.

Vérifiez core/composer.lock pour voir les bibliothèques Symfony. Depuis Drupal 8.6.15, il s'agit des bibliothèques PHP Symfony et connexes :

...
"symfony/class-loader": "~3.4.0",
"symfony/console": "~3.4.0",
"symfony/dependency-injection": "~3.4.26",
"symfony/event-dispatcher": "~3.4.0",
"symfony/http-foundation": "~3.4.26",
"symfony/http-kernel": "~3.4.14",
"symfony/routing": "~3.4.0",
"symfony/serializer": "~3.4.0",
"symfony/translation": "~3.4.0",
"symfony/validator": "~3.4.0",
"symfony/process": "~3.4.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "~3.4.5",
"twig/twig": "^1.38.2",
"doctrine/common": "^2.5",
"doctrine/annotations": "^1.2",
...

Annotations

Drupal 8 utilise les annotations PHP — des commentaires @docblock ajoutés dans votre code avec une syntaxe spéciale — pour découvrir les plugins et fournir un contexte/métadonnées supplémentaires au code exécutable. Les annotations sont lues en utilisant le parseur d’annotations Doctrine (v.1.6.), puis transformées en informations que Drupal peut utiliser pour mieux comprendre ce que fait votre code.

En savoir plus sur l’utilisation des annotations pour la découverte de plugins.

Voir la liste de tous les différents types d’annotations dans Drupal 8.

Voir aussi : PHPDoc (sur Wikipédia)

Plugins

Les plugins fournissent des fonctionnalités modulaires pouvant être facilement remplacées par un autre plugin. Les plugins fournissant une fonctionnalité similaire appartiennent au même type. Par exemple, un « Widget de champ » est un type de plugin, et chaque widget de champ individuel (texte, zone de texte, date, etc.) est implémenté via un plugin.

En savoir plus sur l’API des plugins dans Drupal 8.

Services

Dans Drupal 8, un service est tout objet géré par le conteneur de services. Le concept de services a été introduit pour séparer les fonctionnalités réutilisables et rendre ces services connectables et remplaçables, en les enregistrant dans le conteneur de services d’injection de dépendances avec lequel ils sont étroitement liés.

Voir aussi : Conteneur de services pour Drupal Geeks

Autres ressources

Voici une liste de ressources supplémentaires pour vous aider à vous familiariser avec Drupal 8.