Formation PUB030 : Laravel, 2019 Les paquets Laravel

10.1 Ajouter un paquet à une application Laravel


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.

Liste des paquets existants

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.

Ajout d'une dépendance

Avec composer require

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.

Console Vagrant SSH

composer require éditeur/paquet

Par exemple, pour le paquet intervention/image :

Console Vagrant SSH

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 :

Fichier composer.json

{

    "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"

    },

Manuellement

Si vous préférez, vous pouvez éditer manuellement le fichier composer.json.

Il vous faudra alors demander de télécharger les fichiers :

Console Vagrant SSH

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.

Ajout d'une référence dans la liste des service providers

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 ».

Fichier config\app.php (PHP)

'providers' => [

    ...

    /*

     * Application Service Providers...

     */

    ...,

    EspaceDeNom\SousEspace\UneClasseServiceProvider::class,

],

Ex :

Fichier config\app.php (PHP)

'providers' => [

    ...

    /*

     * Application Service Providers...

     */

    ...,

    Intervention\Image\ImageServiceProvider::class

],

Ajout d'une façade

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 ».

Fichier config\app.php (PHP)

'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 :

Fichier config\app.php (PHP)

'aliases' => [

    ...,

    'JsValidator' => Proengsoft\JsValidation\Facades\JsValidatorFacade::class,

],

Copie des fichiers de configuration, ressources ou autres

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 :

Fichier composer.json

 

"scripts": {

    ...

    "post-update-cmd": [

        ...,

        "php artisan vendor:publish --provider=\"Proengsoft\\JsValidation\\JsValidationServiceProvider\" --tag=public --force"

    ]

},

Console Vagrant SSH

php artisan vendor:publish --provider="Proengsoft\JsValidation\JsValidationServiceProvider"

Utilisation du paquet

Certains paquets donnent accès à de nouvelles commandes artisan.

Par exemple, avec le paquet spatie/laravel-backup :

Console Vagrant SSH

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 :

Contrôleur Laravel (PHP)

flash('Le produit a été enregistré avec succès !')->success();

Pour plus d'information

« 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre