Comment développer un paquet en local ?

Publié le 7 février 2022 par William Suppo
Couverture de l'article Comment développer un paquet en local ?

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-world
2cd tuto-hello-world
3composer 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 !

William Suppo avatar
William Suppo
Je mange du PHP au p'tit dej', et vous ?

A lire

Autres articles de la même catégorie