Même si le noyau de Laravel contient un nombre impressionnant de fonctionnalités, tirées des meilleures pratiques de développement, de nombreux programmeurs ont développé des fonctionnalités supplémentaires et les ont mises à la disposition de la communauté. Ces fonctionnalités sont regroupées dans ce qu'on appelle un paquet (en anglais, package).
Dans cet article, je vous explique les généralités sur l'installation d'un paquet sous Laravel. Les étapes d'installation varieront d'un paquet à l'autre. Il faut toujours consulter les étapes d'installation propres à un paquet pour savoir exactement quoi faire. Ces étapes seront généralement listées dans la page du paquet sur Packagist (https://packagist.org/) ou sur GitHub (https://github.com/) ou encore sur un site Web propre au paquet.
Avec les explications que je vous présente ici, j'espère vous aider à comprendre un peu mieux pourquoi l'installation requiert telle ou telle étape.
Dans les tutoriels et forums, vous trouverez de nombreuses références à des paquets intéressants pour répondre à un besoin précis dans votre application Laravel.
Composer, un outil déjà disponible dans votre boîte Homestead, est le logiciel généralement utilisé pour installer les paquets PHP ainsi que leur dépendances. Vous pouvez effectuer une recherche des paquets disponibles en vous rendant sur le dépôt officiel de Composer : Packagist.
Plusieurs cadres d'application travaillent avec la notion de dépendances. Il s'agit d'un mécanisme qui facilite le téléchargement des paquets manquants ou qui nécessitent une mise à jour, selon les informations enregistrées dans un fichier de configuration.
La commande composer require permet d'ajouter une dépendance à un projet Laravel.
Le nom d'un paquet est formé par le nom de l'éditeur (en anglais : vendor) suivi d'une barre oblique puis du nom du projet, parfois appelé lui aussi paquet.
composer require éditeur/paquet
Par exemple, pour le paquet intervention/image :
composer require intervention/image
Ceci ajoutera une ligne dans le fichier composer.json, qui est placé directement à la racine de votre projet, puis téléchargera dans le dossier vendor les fichiers du paquet et de ses dépendances.
Ex :
{
"name": "laravel/laravel",
"descaription": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.0.0",
"fideloper/proxy": "~3.3",
"intervention/image": "^2.4",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0"
},
Si vous préférez, vous pouvez éditer manuellement le fichier composer.json.
Il vous faudra alors demander de télécharger les fichiers :
composer update
Attention : la commande composer update mettra à jour tous les paquets listés dans composer.json, incluant Laravel.
Dans le cas d'un changement de version de Laravel, vous devrez mettre à jour des sections de votre code, tel que spécifié dans le guide de mise à jour de Laravel.
Si vous ne désirez pas changer tout de suite la version de Laravel, il est préférable d'ajouter le paquet à l'aide de composer require.
Laravel offre un mécanisme qui permet de charger automatiquement les bibliothèques lorsque requis : les service providers.
Ces bibliothèque sont listées dans la section providers du fichier config\app.php.
Pour la majorité des paquets, il faut ajouter une référence dans la liste des service providers. Les ajouts que vous faites seront placés sous le commentaire Application Service Providers.
Consultez la documentation du paquet pour connaître la ligne exacte à ajouter. Il s'agit généralement d'une référence à une classe dont le nom se termine par « ServiceProvider ».
'providers' => [
...
/*
* Application Service Providers...
*/
...,
EspaceDeNom\SousEspace\UneClasseServiceProvider::class,
],
Ex :
'providers' => [
...
/*
* Application Service Providers...
*/
...,
Intervention\Image\ImageServiceProvider::class
],
Certains paquets mettent à votre disposition une façade à utiliser dans votre code. Il s'agit d'un mécanisme qui permet d'accéder à du code complexe à l'aide d'une interface simplifiée.
Pour pouvoir utiliser cette façade, il faut ajouter une entrée dans le tableau alias, toujours dans le fichier config\app.php.
Il faut consulter la documentation du paquet pour connaître la ligne à ajouter. Il s'agit généralement d'une référence à une classe dont le nom se termine par « Facade ».
'aliases' => [
...,
'NomFacade' => EspaceDeNom\SousEspace\UneClasseFacade::class,
],
Le paquet utilisé en exemple jusqu'ici n'a pas de façade. Voici cependant un autre exemple (proengsoft/laravel-jsvalidation) qui en utilise une :
'aliases' => [
...,
'JsValidator' => Proengsoft\JsValidation\Facades\JsValidatorFacade::class,
],
Parfois, le paquet nécessite la copie de fichiers de ressources. Parfois, également, il permet d'installer un fichier de configuration qui nous permettra d'avoir un meilleur contrôle sur son comportement.
C'est pourquoi, lors de l'installation de paquets, les étapes d'installation vous demanderont parfois d'exécuter des opérations supplémentaires, par exemple l'éxécution d'une commande artisan et/ou l'ajout d'une ligne dans un fichier.
Ex :
"scripts": {
...
"post-update-cmd": [
...,
"php artisan vendor:publish --provider=\"Proengsoft\\JsValidation\\JsValidationServiceProvider\" --tag=public --force"
]
},
php artisan vendor:publish --provider="Proengsoft\JsValidation\JsValidationServiceProvider"
Certains paquets donnent accès à de nouvelles commandes artisan.
Par exemple, avec le paquet spatie/laravel-backup :
php artisan backup:run --only-db
Certains paquets donnent accès à de nouvelles fonctionnalités dans le code.
Par exemple, avec le paquet laracasts/flash :
flash('Le produit a été enregistré avec succès !')->success();
« 8 Laravel must-have packages to install when you start a new API-Based Project ». Skyshi. https://medium.com/skyshidigital/8-laravel-must-have-packages-to-install-when-you-start-a-new-api-based-project-18d690f24d0e#.86dc7x7uw
« Laravel packages that make it into every project ». Michael Obi. https://blog.michaelobi.xyz/laravel-packages-that-make-it-into-every-project-c74500c1cec8
« Laravel: Automatic Vendor Cleanup Command ». Code In PHP. http://codeinphp.github.io/post/laravel-automatic-vendor-cleanup-command/
▼Publicité