PHPDOC complet, directement à partir de la source
Ce package génère des fichiers d'assistance qui permettent à votre IDE de fournir une assortiment automatique précise. La génération est effectuée en fonction des fichiers de votre projet, ils sont donc toujours à jour.
La branche 3.x prend en charge Laravel 10 et 11. Pour une version plus ancienne, utilisez les versions 2.x.
Exiger ce package avec Composer en utilisant la commande suivante:
composer require --dev barryvdh/laravel-ide-helperNote
Si vous rencontrez des conflits de version avec Doctrine / Dbal, veuillez essayer: composer require --dev barryvdh/laravel-ide-helper --with-all-dependencies
Ce package utilise le mécanisme de découverte automatique du pack Laravels, ce qui signifie que si vous n'installez pas les dépendances de développement en production, elle ne sera pas non plus chargée.
Si pour une raison quelconque, vous voulez contrôler manuellement ceci:
extra.laravel.dont-discover dans composer.json , par exemple "extra" : {
"laravel" : {
"dont-discover" : [
" barryvdh/laravel-ide-helper "
]
}
}providers dans config/app.php : Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class,AppServiceProvider avec la méthode register() : public function register ()
{
if ( $ this -> app -> isLocal ()) {
$ this -> app -> register ( Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class);
}
// ...
}Remarque: Évitez la mise en cache de la configuration dans votre environnement de développement, il peut entraîner des problèmes après l'installation de ce package; Effacez respectivement le cache à l'avance via
php artisan cache:clearsi vous rencontrez des problèmes lorsque vous exécutez les commandes
Découvrez cette vidéo de Laracasts pour une introduction / explication rapide!
php artisan ide-helper:generate - Génération PHPDOC pour les façades Laravelphp artisan ide-helper:models - PHPDOCS pour les modèlesphp artisan ide-helper:meta - Phpstorm Meta FichierRemarque: vous avez besoin de codéclice pour le texte sublime: https://github.com/spectacles/codecomplice
Vous pouvez maintenant générer les documents vous-même (pour les futures mises à jour)
php artisan ide-helper:generate Remarque: bootstrap/compiled.php doit être effacé en premier, alors exécutez php artisan clear-compiled avant la génération.
Cela générera le fichier _ide_helper.php qui devrait être analysé en outre par votre IDE pour la saisie semi-automatique. Vous pouvez utiliser le filename de configuration pour modifier son nom.
Vous pouvez configurer votre composer.json pour ce faire chaque fois que vous mettez à jour vos dépendances:
"scripts" : {
"post-update-cmd" : [
"Illuminate\Foundation\ComposerScripts::postUpdate" ,
"@php artisan ide-helper:generate" ,
"@php artisan ide-helper:meta"
]
} , Vous pouvez également publier le fichier de configuration pour modifier les implémentations (c.-à-d. Interface à une classe spécifique) ou définir les défauts par défaut pour --helpers .
php artisan vendor:publish --provider= " BarryvdhLaravelIdeHelperIdeHelperServiceProvider " --tag=configLe générateur essaie d'identifier la classe réelle, mais si elle ne peut être trouvée, vous pouvez la définir dans le fichier de configuration.
Certaines classes ont besoin d'une connexion de base de données fonctionnelle. Si vous n'avez pas de connexion de travail par défaut, certaines façades ne seront pas incluses. Vous pouvez utiliser un pilote SQLite en mémoire en ajoutant l'option -M .
Si vous utilisez des façades en temps réel dans votre application, celles-ci seront également incluses dans le fichier généré à l'aide d'une annotation @mixin et à l'extension de la classe d'origine sous la façade.
Remarque : Cette fonctionnalité utilise les fichiers FACADES en temps réel générés dans le dossier storage/framework/cache . Ces fichiers sont générés à la demande lorsque vous utilisez la façade en temps réel, donc si le cadre n'a pas généré cela en premier, il ne sera pas inclus dans le fichier d'aide. Exécutez d'abord l'itinéraire / commande / code, puis régénérez le fichier d'aide et cette fois, la façade en temps réel y sera incluse.
Vous pouvez choisir d'inclure des fichiers d'assistance. Ceci n'est pas activé par défaut, mais vous pouvez le remplacer avec l'option --helpers (-H) . Le Illuminate/Support/helpers.php est déjà configuré, mais vous pouvez ajouter / supprimer vos propres fichiers dans le fichier de configuration.
Ce package peut générer des phpdocs pour les macros et les mixins qui seront ajoutés au fichier _ide_helper.php .
Mais cela ne fonctionne que si vous utilisez la distinction de type lors de la déclaration d'une macro.
Str :: macro ( ' concat ' , function ( string $ str1 , string $ str2 ) : string {
return $ str1 . $ str2 ;
}); Si vous ne souhaitez pas écrire vos propriétés vous-même, vous pouvez utiliser la commande php artisan ide-helper:models pour générer des phpdocs, en fonction des colonnes de table, des relations et des getters / setters.
Remarque: Cette commande nécessite une connexion de base de données de travail pour intro-informer le tableau de chaque modèle
Par défaut, il vous est demandé d'écraser ou d'écrire dans un fichier séparé ( _ide_helper_models.php ). Vous pouvez écrire les commentaires directement sur votre fichier de modèle, en utilisant l'option --write (-W) , ou forcer à ne pas écrire avec --nowrite (-N) .
Alternativement à l'aide de l'option --write-mixin (-M) ne fera qu'ajouter une balise de mixin à votre fichier de modèle, en écrivant le reste dans ( _ide_helper_models.php ). Le nom de classe sera différent du modèle, en évitant la gêne en double IDE.
Veuillez vous assurer de sauvegarder vos modèles avant d'écrire les informations.
L'écriture sur les modèles doit conserver les commentaires existants et uniquement ajouter de nouvelles propriétés / méthodes. Il ne mettra pas à jour les propriétés / méthodes modifiées.
Avec l'option --reset (-R) , l'ensemble du PHPDOC existant est remplacé, y compris tous les commentaires qui ont été faits.
php artisan ide-helper:models " AppModelsPost " /**
* AppModelsPost
*
* @property integer $id
* @property integer $author_id
* @property string $title
* @property string $text
* @property IlluminateSupportCarbon $created_at
* @property IlluminateSupportCarbon $updated_at
* @property-read User $author
* @property-read IlluminateDatabaseEloquentCollection|Comment[] $comments
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newModelQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost query()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost whereTitle($value)
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost forAuthors(User ...$authors)
* …
*/ Avec l'option --write-mixin (-M)
/**
* …
* @mixin IdeHelperPost
*/ Par défaut, les modèles dans app/models sont numérisés. L'argument facultatif indique quels modèles utiliser (également en dehors de l'application / des modèles).
php artisan ide-helper:models " AppModelsPost " " AppModelsUser " Vous pouvez également numériser un répertoire différent, en utilisant l'option --dir (relative du chemin de base):
php artisan ide-helper:models --dir= " path/to/models " --dir= " app/src/Model " Vous pouvez publier le fichier de configuration ( php artisan vendor:publish ) et définir les répertoires par défaut.
Les modèles peuvent être ignorés à l'aide de l'option --ignore (-I)
php artisan ide-helper:models --ignore= " AppModelsPost,AppModelsUser " Ou peut être ignoré en définissant la configuration ignored_models
' ignored_models ' => [
App Post ::class,
Api User ::class
],where* Méthodes Eloquent permet d'appeler where<Attribute> sur vos modèles, par exemple Post::whereTitle(…) et traduit automatiquement cela par EG Post::where('title', '=', '…') .
Si pour une raison quelconque, il n'est pas désiré de les générer (un pour chaque colonne), vous pouvez désactiver cela via config write_model_magic_where et le définir sur false .
*_count Propriétés Vous pouvez utiliser la méthode ::withCount pour compter les résultats du nombre d'une relation sans les charger réellement. Ces résultats sont ensuite placés dans des attributs suivant la convention <columname>_count .
Par défaut, ces attributs sont générés dans le PHPDOC. Vous pouvez les désactiver en définissant la configuration write_model_relation_count_properties sur false sur false .
Laravel 9 a introduit des annotations génériques dans DocBlocks pour les collections. PHPSTORM 2022.3 et supérieur à la prise en charge de l'utilisation des annotations génériques dans @property et @property-read Declarations dans DocBlocks, par exemple Collection<User> au lieu de Collection|User[] .
Ceux-ci peuvent être désactivés en définissant la configuration use_generics_annotations sur false .
@comment basé sur DocBlock Afin de mieux prendre en charge les IDE, les relations et les getters / setters peuvent également ajouter un commentaire à une propriété comme les colonnes de table. Par conséquent, un docblock @comment personnalisé est utilisé:
class Users extends Model
{
/**
* @comment Get User's full name
*
* @return string
*/
public function getFullNameAttribute (): string
{
return $ this -> first_name . ' ' . $ this -> last_name ;
}
}
// => after generate models
/**
* AppModelsUsers
*
* @property-read string $full_name Get User's full name
* …
*/ Une nouvelle méthode aux modèles éloquents a été ajoutée appelée référence newEloquentBuilder où nous pouvons ajouter un support pour créer une nouvelle classe dédiée au lieu d'utiliser des lunettes locales dans le modèle lui-même.
Si pour une raison quelconque, il n'est pas désiré de les générer (un pour chaque colonne), vous pouvez désactiver cela via config write_model_external_builder_methods et le définir sur false .
Si vous utilisez des relations non intégrées à Laravel, vous devrez spécifier le nom et la classe de retour dans la configuration pour obtenir une bonne génération.
' additional_relation_types ' => [
' externalHasMany ' => My Package externalHasMany::class
],Les relations trouvées généreront généralement une valeur de retour basée sur le nom de la relation.
Si vos relations personnalisées ne suivent pas ce schéma de dénomination traditionnel, vous pouvez définir son type de retour manuellement. Les options disponibles sont many et morphTo .
' additional_relation_return_types ' => [
' externalHasMultiple ' => ' many '
], Si vous avez besoin d'informations supplémentaires sur votre modèle à partir de sources qui ne sont pas gérées par défaut, vous pouvez vous connecter au processus de génération avec des crochets de modèle pour ajouter des informations supplémentaires à la volée. Créez simplement une classe qui implémente ModelHookInterface et ajoutez-le au tableau model_hooks dans la configuration:
' model_hooks ' => [
MyCustomHook ::class,
], La méthode run sera appelée pendant la génération pour chaque modèle et reçoit les ModelsCommand exécution actuels et le Model actuel, par exemple:
class MyCustomHook implements ModelHookInterface
{
public function run ( ModelsCommand $ command , Model $ model ): void
{
if (! $ model instanceof MyModel ) {
return ;
}
$ command -> setProperty ( ' custom ' , ' string ' , true , false , ' My custom property ' );
$ command -> unsetMethod ( ' method ' );
$ command -> setMethod ( ' method ' , $ command -> getMethodType ( $ model , ' SomeClass ' ), [ ' $param ' ]);
}
}/**
* MyModel
*
* @property integer $ id
* @property-read string $ customSi vous avez besoin de support PHPDOC pour les méthodes de migration courantes, par exemple
$ table -> string ( " somestring " )-> nullable ()-> index (); Après avoir publié le fournisseur, modifiez simplement la ligne include_fluent dans votre fichier config/ide-helper.php en:
' include_fluent ' => true , Ensuite, exécutez php artisan ide-helper:generate , vous verrez maintenant toutes les méthodes courantes reconnues par votre IDE.
Si vous souhaitez que les méthodes factory()->create() et factory()->make() pour renvoyer la classe de modèle correcte, vous pouvez activer les constructeurs d'usine personnalisés avec la gamme include_factory_builders dans votre fichier config/ide-helper.php . Déprécié pour Laravel 8 ou plus tard.
' include_factory_builders ' => true ,Pour que cela fonctionne, vous devez également publier le fichier PHPStorm Meta (voir ci-dessous).
Il est possible de générer un fichier de méta phpstorm pour ajouter la prise en charge du modèle de conception d'usine. Pour Laravel, cela signifie que nous pouvons faire comprendre à PhpStorm quel type d'objet nous résolvons du conteneur IOC. Par exemple, events renverront un objet IlluminateEventsDispatcher , donc avec le fichier META, vous pouvez appeler app('events') et elle sera assortie automatiquement les méthodes de répartiteur.
php artisan ide-helper:meta app ( ' events ' )-> fire ();
App :: make ( ' events ' )-> fire ();
/** @var IlluminateFoundationApplication $app */
$ app -> make ( ' events ' )-> fire ();
// When the key is not found, it uses the argument as class name
app ( ' AppSomeClass ' );
// Also works with
app ( App SomeClass ::class);Remarque: vous devrez peut-être redémarrer PHPSTorm et vous assurer que
.phpstorm.meta.phpest indexé.Remarque: Lorsque vous recevez une Fatalexception: classe introuvable, vérifiez votre configuration (par exemple, supprimez S3 en tant que pilote cloud lorsque vous n'avez pas configuré S3. Supprimez Redis ServiceProvider lorsque vous ne l'utilisez pas).
Vous pouvez modifier le nom de fichier généré via la configuration meta_filename . Cela peut être utile pour les cas où vous souhaitez profiter de la prise en charge de PhpStorm du répertoire .phpstorm.meta.php/ : Tous les fichiers placés là-bas sont analysés, si vous souhaitez fournir des fichiers supplémentaires à PHPStorm.
Le Generator Laravel IDE Helper est un logiciel open d'origine sous licence MIT