Vous souhaitez ajouter une fonctionnalité à votre application via un paquet ? Voici un tour d’horizon de la phase de développement.
On admet qu’on dispose d’une application qui a un fichier composer.json
à sa racine.
Petit rappel, ce fichier est la carte d’identité de votre application, il contient sa définition et ses exigences, notamment vis à vis de ses dépendances.
Créer le paquet
On va créer le dossier de notre paquet au même niveau d'arborescence que celui de notre application :
1mkdir tuto-hello-world2cd tuto-hello-world3composer init
Ensuite on répond au questionnaire en indiquant notamment que l’on développe une library
, ainsi on obtient un fichier composer.json
semblable à ceci :
1{ 2 "name": "tuto/hello-world", 3 "description": "Développement d'un paquet en local", 4 "type": "library", 5 "autoload": { 6 "psr-4": { 7 "Tuto\\HelloWorld\\": "src/" 8 } 9 },10 "require": {}11}
Afin de tester, par la suite, la bonne intégration de notre paquet dans notre application, on crée une classe ici src/Hello.php
qui contient le code suivant :
1<?php 2 3namespace Tuto\HelloWorld; 4 5class Hello 6{ 7 public function say(): string 8 { 9 return 'Hello world';10 }11}
Déclarer la source de votre dépôt
Avant d’intégrer notre paquet à notre application, il est nécessaire que celle-ci est connaissance de l’emplacement du paquet, pour cela on rajoute un repository
de cette manière :
1composer config repositories.package path ../tuto-hello-world
A partir de maintenant, composer va chercher des paquets correspondants à ses dépendances sur le site Packagist mais aussi au niveau du chemin que l’on a renseigné, c’est à dire le paquet en développement.
Définir votre paquet comme dépendance
Cette étape est commune à tous les paquets, on déclare la dépendance comme ceci :
1composer require tuto/hello-world:*
Cela aura pour effet d’intégrer le paquet dans le dossier vendor
de notre application via un lien symbolique, ce qui veut dire que l’on peut modifier les sources de notre paquet indistinctement depuis le dossier de notre application ou bien celui de notre paquet, plutôt pratique n’est-ce pas ?
Et voilà, on peut dorénavant utiliser notre classe Tuto\HelloWorld\Hello
n'importe où dans notre application !
A lire
Autres articles de la même catégorie

Inversion de dépendance en Laravel
Améliorons l'architecture de nos projets en implémentant une dépendance externe à travers 3 approches différentes.

Mathieu De Gracia

Maîtrisez les relations belongs-to-many avec la méthode attach
Attardons nous sur les subtilités de la méthode attach

Mathieu De Gracia

Quelques tips pour phpunit #1
Quelques tips pour améliorer vos performances et votre confort d’utilisation de phpunit.

Mathieu De Gracia