Php
Laravel
3 min
Mis en ligne le 27/12/2024

Laravel IDE Helper

Laravel IDE Helper est un package qui génère des fichiers d'aide pour améliorer l'autocomplétion dans les éditeurs de code, Il permet de documenter les modèles et d'ajouter des annotations PHPDoc, rendant l'expérience de développement plus fluide.

Installation

Laravel IDE Helper s'installe facilement avec Composer. Il suffit d'exécuter la commande suivante :

1composer require --dev barryvdh/laravel-ide-helper

Par défaut, ce paquet utilise l'auto-découverte de paquets de Laravel. Il sera donc chargé automatiquement. Si, pour une raison, vous souhaitez contrôler manuellement sa mise en place, il faudra désactiver comportement dans le fichier composer.json.

1"extra": {
2 "laravel": {
3 "dont-discover": [
4 "barryvdh/laravel-ide-helper"
5 ]
6 }
7}

Puis ajoutez le Provider dans le fichier config/app.php :

1Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

Si vous souhaitez le charger uniquement dans un environnement local, il faudra plutôt ajouter le chargement du provider dans la méthode register du fichier AppServiceProvider.php :

1public function register()
2{
3 if ($this->app->isLocal()) {
4 $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
5 }
6}

Utilisation

Avant la génération des fichiers, il faut exécuter la commande php artisan clear-compiled afin de supprimer le fichier bootstrap/compiled.php.

Il suffit ensuite d'exécuter les commandes suivantes pour générer les différents fichiers qui serviront pour l'autocomplétion :

1php artisan ide-helper:generate # Génération des PHPDocs pour les façades
2php artisan ide-helper:models -M # Génération des PHPDocs pour les modèles
3php artisan ide-helper:meta # Génération d'un meta fichier pour PHPStorm

La commande php artisan ide-helper:models demande s'il faut écraser le modèle ou écrire les commentaires dans un fichier séparé _ide_helper_models.php. Il est possible de forcer un choix en utilisant les paramètres -W pour écrire les commentaires en en-tête de la classe du fichier du modèle, ou -M pour écrire dans le fichier séparé.

Par défaut, tous les modèles présents dans app/Models sont scannés. Il est possible de passer à la commande d'autres modèles à utiliser, y compris en dehors de ce dossier. Il est également possible de scanner différents répertoires, ou encore d'ignorer certains modèles.

1php artisan ide-helper:models "App\Models\Post" "App\Services\SMX\Models\Post" -M # Spécifier des modèles
2php artisan ide-helper:models --dir="App\Models\Post" --dir="App\Services\SMX\Models" -M # Spécifier des dossiers
3php artisan ide-helper:models --ignore="App\Models\Post,App\Models\Bookmark" # Ignorer des modèles

Il est également possible d'ignorer des modèles de manière persistante en publiant et en modifiant le fichier de configuration du package.

Configuration

Pour publier le fichier de configuration dans config/ide-helper.php, il faut exécuter la commande suivante :

1php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config

Pour persister le fait d'ignorer des modèles, il suffit de les ajouter dans le fichier de configuration.

1'ignored_models' => [
2 App\Post::class,
3 Api\Bookmark::class
4],

Il est également possible d'activer la prise en charge de l'auto-complétion pour les méthodes Fluent comme $table->string("somestring")->nullable()->index(); depuis le fichier de configuration. Il faut simplement changer la ligne include_fluent à true.

1'include_fluent' => true,

Enfin, vous pouvez configurer votre composer.json pour effectuer les opérations de génération des fichiers à chaque fois que vous mettez à jour vos dépendances.

1"scripts": {
2 "post-update-cmd": [
3 "Illuminate\\Foundation\\ComposerScripts::postUpdate",
4 "@php artisan ide-helper:generate",
5 "@php artisan ide-helper:meta"
6 ]
7},

Voici un aperçu des principales fonctionnalités de Laravel IDE Helper. Si vous souhaitez entrer plus dans les détails, je vous invite à consulter la page github du projet.

Sources

Ludovic Meurot

Développeur web, PHP Laravel, interessé par l'admin sys et du réseau.