Catégorie: Développement

Gérez vos dépendances avec composer sur Drupal 7

Auteur(s) de l'article

Simon
Simon
Composer permet de gérer vos dépendances PHP. Vous retrouverez sur packagist.org des centaines de librairies utilisables pour vos projets PHP. Mais comment tirer parti de ces librairies avec Drupal? Comment les intégrer à vos modules?
Le problème est plus compliqué qu’il n’y parait. En effet, Drupal a sa propre gestion de dépendance pour ses modules. Comment faire quand chaque module à son propre fichier de dépendances (composer.json)?

Composer manager

Heureusement, la communauté s’est déjà penché sur le problème et nous avons aujourd’hui une solution qui, loin d’être parfaite, fonctionne plutôt bien: composer manager.
Composer manager fait deux choses:
  • Génèrer un fichier composer.json unique contenant l’ensemble des dépendances. Pour cela il recherche dans chaque module un fichier composer.json et les fusionnes ensemble.
  • Injecter l’autoloader dans un hook_init
Bien que composer manager propose une interface graphique, nous allons voir ici comment l’utiliser avec drush en ligne de commande. Cette approche permet de générer notre fichier composer.json dans un répertoire inaccessible par votre serveur web.

Utiliser composer manager

Configurer composer manager

Il est recommandé de modifier le chemin du dossier vendor et du fichier composer.json généré. Les valeurs recommandées sont les suivantes:
// settings.php $conf['composer_manager_vendor_dir'] = '../vendor'; $conf['composer_manager_file_dir'] = '../';
Vous pouvez également gérer ces options depuis l’interface.

Ajouter composer.json à votre module

La première étape consiste à ajouter votre composer.json à la racine de votre module. Ici nous allons ajouter goute:
{ "require": { "fabpot/goutte": "~2.0" } }

Générer un composer.json global

Si vous activez un module avec drush en composer manager, vous proposera automatiquement de mettre à jour le fichier composer.json global.
Il vous est aussi possible de générer le fichier à tout moment via
drush composer-json-rebuild
Pour ensuite à la racine de votre projet Drupal lancer
composer install
Ce qui téléchargera les dépendances dans le dossier vendors.

Utiliser votre librairie

C’est très simple. Vus que l’autoloader est chargé automatiquement il suffit d’instancier la class qui vous intéresse ici
$client = new Goutte\Client();
Si vous souhaiter accéder à votre class avant que hook_init soit exécuté vous pouvez charger l’autoloader manuellement
use Goutte; $loader = \ComposerAutoloaderInitComposerManager::getLoader(); Client::registerLoader(array($loader, 'loadClass'));
À vous le meilleur des deux mondes!

Continuer ma lecture

Auteur(s) de l'article

Akira
Akira

Making of : “La nuit des Losers”

Le site de « La Nuit des Losers », fait en un temps record : wireframes papier, animations testées en direct avec Claude Code, un flipper abandonné, un tableau de réactions un peu triché, et deux-trois bugs qu’on garde précieusement. Ce que l’IA a vraiment changé ici, et là où elle a calé.
Le site de « La Nuit des Losers », fait en un temps record : wireframes papier, animations testées en direct avec Claude Code, un flipper abandonné, un tableau de réactions un peu triché, et deux-trois bugs qu’on garde précieusement. Ce que l’IA a vraiment changé ici, et là où elle a calé.
Making of : “La nuit des Losers”

Auteur(s) de l'article

Pierre
Pierre

Dark mode : nécessité ou effet de mode

Nous faisons le tri entre idées reçues, réalités techniques et bonnes pratiques de design.
Nous faisons le tri entre idées reçues, réalités techniques et bonnes pratiques de design.
Dark mode : nécessité ou effet de mode

Auteur(s) de l'article

Susana
Susana

L’IA pour la gestion de projet

En tant que chef·fe de projet en agence web, on entend beaucoup parler de l’IA et de ce fameux Claude, réputé pour accompagner efficacement les développeur·euses dans leur quotidien. Mais \[…\]
En tant que chef·fe de projet en agence web, on entend beaucoup parler de l’IA et de ce fameux Claude, réputé pour accompagner efficacement les développeur·euses dans leur quotidien. Mais \[…\]
L’IA pour la gestion de projet