Montre comment utiliser Composer pour gérer l’autoloading des classes internes à un projet.
Nous avons vu dans un précédent article comment installer Composer. Si ce dernier permet de gérer les différentes dépendances de nos projets comme les librairies externes, nous allons voir dans un premier temps comment l’utiliser pour gérer l’autoloading de nos propres classes dans un projet
Nous allons voir comment intégrer Composer à un projet dans le but de gérer l’ autoloading des classes d’un petit programme PHP ce qui nous évitera d’écrire le code correspondant à cette fonction.
Nous reprendrons l’exemple utilisé dans un article précédent Auto chargement automatique des classes, le but sera de remplacer l’autoloading manuel que nous avions écrit par une gestion par Composer.
A partir de ce programme, nous allons d’abord supprimer la classe Autoloader que nous avions écrite ainsi que les références dans les autres fichiers, à cette classe.
Le projet a donc la configuration suivante (avec un fichier en moins donc) :
On supprime dans le fichier test.php l’appel à la classe Autoloader que nous avons effacé du projet :
Dans un terminal et dans le répertoire courant du projet, nous allons exécuter le programme avec la commande suivante :
Nous nous retrouvons logiquement avec un message d’erreur puisque nous n’avons plus d’autoload. Nous allons maintenant configurer Composer pour qu’il génère automatiquement un autoloader.
Pour cela, toujours dans un terminal à la racine du projet, nous allons taper la commande suivante :
Normalement, suite à l’exécution de la commande précédente, vous devriez vous retrouver avec un nouveau fichier à la racine du projet nommé composer.json .
Nous allons modifier le fichier composer.json pour ajouter une rubrique "autoload" : ... pour obtenir le contenu suivant :
Explications : Nous précisons que notre structure respecte la recommandation PSR-4 (correspondance entre espaces de noms et dossiers…). Nous précisons que la racine de l’espace de nom nommé "app\" correspond au contenu du dossier "app\".
Une fois le fichier modifié il faut dire à Composer d’effectuer la mise à jour avec la commande suivante :
Cette commande va générer le fichier /vendor/autoload.php dont la fonction sera de générer dynamiquement l’autoloader des classes du projet.
Il reste à inclure ce fichier dans le fichier test.php avec un require. Ce qui donne le fichier suivant :
Si nous exécutons à nouveau le programme, nous n’avons plus d’erreur.
Si maintenant vous définissez de nouvelles classes dans App et que vous respectiez la correspondance entre dossiers, sous-dossiers et espaces de noms, l’autoloading sera pris en compte automatiquement par Composer. Par contre, si vous avez besoin de définir des classes dans un dossier ou sous-dossier différent de App, vous devrez ajouter une règle dans le fichier composer.json.
Si vous utilisez Visual Studio Code pour vos développements PHP, vous pourrez installer l’extension Namespace Resolver qui permet d’importer (use) les classes utilisées dans les fichiers à partir du menu contextuel.
Nous venons de voir dans cette petite introduction à Composer comment l’intégrer à un projet pour générer l’auto chargement des différentes classes que l’on ajoute au programme. Un autre avantage est que l’on pourra intégrer au projet des librairies externes aussi simplement, que ce soit des outils comme PHPUnit ou des frameworks complets comme Symfony.
Crée par: chris
Créé le: 5 octobre 2019
Modifié le: 5 octobre 2019
Nombre de visites: 525
Popularité: 13 %
Popularité absolue: 1
2003-2024 LePpf
Plan du site
| Se connecter |
RSS 2.0 |
Sur YouTube
Visiteurs connectés : 0
Nombre moyen de visites quotidiennes sur le site: 198