Vollständige PHPDOCs direkt aus der Quelle
Dieses Paket generiert Helferdateien, mit denen Ihre IDE eine genaue Autocompletion bereitstellen kann. Die Generation wird basierend auf den Dateien in Ihrem Projekt durchgeführt, sodass sie immer aktuell sind.
Der 3.x -Zweig unterstützt Laravel 10 und 11. Für ältere Version verwenden die 2.x -Releases.
Erfordern Sie dieses Paket mit dem Komponisten mit dem folgenden Befehl:
composer require --dev barryvdh/laravel-ide-helper
Notiz
Wenn Sie auf Versionskonflikte mit Doktrin/DBAL begegnen, versuchen Sie es mit: composer require --dev barryvdh/laravel-ide-helper --with-all-dependencies
In diesem Paket wird das Laravels-Paket für automatische Entdeckungsmechanismus verwendet. Wenn Sie keine Develabhängigkeiten in der Produktion installieren, wird es auch nicht geladen.
Wenn Sie aus irgendeinem Grund dies manuell kontrollieren möchten:
extra.laravel.dont-discover
Schlüssel in composer.json
, z. B. hinzu "extra" : {
"laravel" : {
"dont-discover" : [
" barryvdh/laravel-ide-helper "
]
}
}
providers
-Array in config/app.php
hinzu: Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class,
AppServiceProvider
mit der register()
-Methode hinzufügen: public function register ()
{
if ( $ this -> app -> isLocal ()) {
$ this -> app -> register ( Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class);
}
// ...
}
Hinweis: Vermeiden Sie das Zwischenspeichern der Konfiguration in Ihrer Entwicklungsumgebung. Nach der Installation dieses Pakets kann dies zu Problemen führen. Löschen Sie den Cache im Voraus über
php artisan cache:clear
, wenn Sie beim Ausführen der Befehle auf Probleme stoßen
Schauen Sie sich dieses Laracasts -Video an, um eine kurze Einführung/Erklärung zu erhalten!
php artisan ide-helper:generate
- PHPDOC -Erzeugung für Laravel -Fassadenphp artisan ide-helper:models
- Phpdocs für Modellephp artisan ide-helper:meta
- Phpstorm -Meta -DateiHinweis: Sie benötigen CodeComplice für sublime Text: https://github.com/spectacles/Codecomplice
Sie können die Dokumente jetzt selbst wiederherstellen (für zukünftige Updates)
php artisan ide-helper:generate
Hinweis: bootstrap/compiled.php
muss zuerst gelöscht werden. Führen Sie also vor der Erzeugung php artisan clear-compiled
.
Dadurch wird die Datei _ide_helper.php
generiert, von der erwartet wird, dass sie zusätzlich von Ihrer IDE für automatische Vervollständigung analysiert wird. Sie können den filename
verwenden, um seinen Namen zu ändern.
Sie können Ihren composer.json
so konfigurieren, dass Sie dies bei der Aktualisierung Ihrer Abhängigkeiten tun:
"scripts" : {
"post-update-cmd" : [
"Illuminate\Foundation\ComposerScripts::postUpdate" ,
"@php artisan ide-helper:generate" ,
"@php artisan ide-helper:meta"
]
} ,
Sie können die Konfigurationsdatei auch veröffentlichen, um die Implementierung (dh die Schnittstelle zu einer bestimmten Klasse) zu ändern oder Standardeinstellungen für --helpers
festzulegen.
php artisan vendor:publish --provider= " BarryvdhLaravelIdeHelperIdeHelperServiceProvider " --tag=config
Der Generator versucht, die reale Klasse zu identifizieren. Wenn sie jedoch nicht gefunden werden kann, können Sie sie in der Konfigurationsdatei definieren.
Einige Klassen benötigen eine Arbeitsdatenbankverbindung. Wenn Sie keine Standard -Arbeitsverbindung haben, werden einige Fassaden nicht enthalten. Sie können einen In -Memory -SQLite -Treiber verwenden, indem Sie die Option -M
hinzufügen.
Wenn Sie Echtzeitfassaden in Ihrer App verwenden, werden diese auch in der generierten Datei mit einer @mixin
-Annotation aufgenommen und die ursprüngliche Klasse unter der Fassade erweitert.
Hinweis : Diese Funktion verwendet die generierten Echtzeit-Fassadendateien im Ordner storage/framework/cache
. Diese Dateien werden bei der Verwendung der Echtzeit-Fassade on-Demand generiert. Wenn das Framework dies zuerst nicht generiert hat, wird es nicht in die Helferdatei aufgenommen. Führen Sie zuerst die Route/Befehl/Code aus und regenerieren Sie dann die Helferdatei. Dieses Mal wird die Echtzeit-Fassade darin enthalten.
Sie können sich für Helferdateien einfügen. Dies ist standardmäßig nicht aktiviert, aber Sie können es mit der Option --helpers (-H)
überschreiben. Das Illuminate/Support/helpers.php
ist bereits eingerichtet, aber Sie können Ihre eigenen Dateien in der Konfigurationsdatei hinzufügen/entfernen.
Dieses Paket kann PHPDOCs für Makros und Mixins generieren, die zur Datei _ide_helper.php
hinzugefügt werden.
Dies funktioniert jedoch nur, wenn Sie den Typ verwenden, der bei der Erklärung eines Makros hinweist.
Str :: macro ( ' concat ' , function ( string $ str1 , string $ str2 ) : string {
return $ str1 . $ str2 ;
});
Wenn Sie Ihre Eigenschaften nicht selbst schreiben möchten, können Sie den Befehl php artisan ide-helper:models
verwenden, um PHPDOCs zu generieren, basierend auf Tabellenspalten, Beziehungen und Gettern/Setzen.
HINWEIS: Dieser Befehl erfordert eine Arbeitsdatenbankverbindung, um die Tabelle jedes Modells zu introspektieren
Standardmäßig werden Sie gebeten, eine separate Datei zu überschreiben oder in eine separate Datei zu schreiben ( _ide_helper_models.php
). Sie können die Kommentare direkt in Ihre Modelldatei schreiben, wobei die Option --write (-W)
oder zwingen, nicht mit --nowrite (-N)
zu schreiben.
Alternativ fügt die Option --write-mixin (-M)
nur ein Mixin-Tag zu Ihrer Modelldatei hinzu und schreibt den Rest in ( _ide_helper_models.php
). Der Klassenname unterscheidet sich vom Modell und vermeidet den ide -doppelten Ärger.
Bitte stellen Sie sicher, dass Sie Ihre Modelle sichern, bevor Sie die Informationen schreiben.
Das Schreiben in die Modelle sollte die vorhandenen Kommentare aufbewahren und nur neue Eigenschaften/Methoden anhängen. Es wird nicht geänderte Eigenschaften/Methoden aktualisiert.
Mit der Option --reset (-R)
wird das gesamte vorhandene PHPDOC ersetzt, einschließlich aller abgegebenen Kommentare.
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)
* …
*/
Mit der Option --write-mixin (-M)
/**
* …
* @mixin IdeHelperPost
*/
Standardmäßig werden Modelle in app/models
gescannt. Das optionale Argument gibt an, welche Modelle verwendet werden sollen (auch externe Apps/Modelle).
php artisan ide-helper:models " AppModelsPost " " AppModelsUser "
Sie können auch ein anderes Verzeichnis mit der Option --dir
(relativ vom Basispfad) scannen:
php artisan ide-helper:models --dir= " path/to/models " --dir= " app/src/Model "
Sie können die Konfigurationsdatei ( php artisan vendor:publish
) veröffentlichen und die Standardverzeichnisse festlegen.
Modelle können mit der Option --ignore (-I)
ignoriert werden
php artisan ide-helper:models --ignore= " AppModelsPost,AppModelsUser "
Oder kann ignoriert werden, indem die Konfiguration ignored_models
festgelegt wird
' ignored_models ' => [
App Post ::class,
Api User ::class
],
where*
Methoden Eloquent ermöglicht das Anruf where<Attribute>
in Ihren Modellen, zB Post::whereTitle(…)
und übersetzt dies automatisch in zB Post::where('title', '=', '…')
.
Wenn es aus irgendeinem Grund unerwünscht ist, sie zu generieren (eine für jede Spalte), können Sie dies über config schreiben, write_model_magic_where
und auf false
einstellen.
*_count
Eigenschaften Sie können die ::withCount
-Methode verwenden, um die Zahlergebnisse aus einer Beziehung zu zählen, ohne sie tatsächlich zu laden. Diese Ergebnisse werden dann in Attributen platziert, die der Konvention <columname>_count
sind.
Standardmäßig werden diese Attribute im PHPDOC generiert. Sie können sie ausschalten, indem Sie die config write_model_relation_count_properties
auf false
einstellen.
Laravel 9 führte Generika -Anmerkungen in Docblocks für Sammlungen ein. PHPSTORM 2022.3 und oben unterstützen Sie die Verwendung von Generika-Anmerkungen in @property
und @property-read
Deklarationen in DocBlocks, Collection|User[]
Collection<User>
Diese können deaktiviert werden, indem die config use_generics_annotations
auf false
festgelegt werden.
@comment
basierend auf Docblock Um IDEs besser zu unterstützen, können Beziehungen und Getters/Setzer einer Eigenschaft wie Tabellenspalten auch einen Kommentar hinzufügen. Daher wird ein benutzerdefiniertes Docblock @comment
verwendet:
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
* …
*/
Eine neue Methode für die eloquenten Modelle wurde als newEloquentBuilder
-Referenz hinzugefügt, bei der wir Unterstützung für die Erstellung einer neuen dedizierten Klasse hinzufügen können, anstatt lokale Scopes im Modell selbst zu verwenden.
Wenn es aus irgendeinem Grund unerwünscht ist, sie generieren zu lassen (eine für jede Spalte), können Sie dies über config write_model_external_builder_methods
und auf false
einstellen.
Wenn Sie Beziehungen verwenden, die nicht in Laravel integriert sind, müssen Sie den Namen und die Rückgabeklasse in der Konfiguration angeben, um die ordnungsgemäße Erzeugung zu erhalten.
' additional_relation_types ' => [
' externalHasMany ' => My Package externalHasMany::class
],
Gefundene Beziehungen generieren in der Regel einen Rückgabewert, der auf dem Namen der Beziehung basiert.
Wenn Ihre benutzerdefinierten Beziehungen diesem traditionellen Namensschema nicht folgen, können Sie den Rückgabetyp manuell definieren. Die verfügbaren Optionen sind many
und morphTo
.
' additional_relation_return_types ' => [
' externalHasMultiple ' => ' many '
],
Wenn Sie zusätzliche Informationen zu Ihrem Modell aus Quellen benötigen, die standardmäßig nicht gehandhabt werden, können Sie sich mit Modellhaken an den Erzeugungsprozess anschließen, um zusätzliche Informationen im laufenden Fliegen hinzuzufügen. Erstellen Sie einfach eine Klasse, die ModelHookInterface
implementiert, und fügen Sie sie dem model_hooks
-Array in der Konfiguration hinzu:
' model_hooks ' => [
MyCustomHook ::class,
],
Die run
-Methode wird während der Generation für jedes Modell aufgerufen und erhält die aktuellen laufenden ModelsCommand
und das aktuelle Model
, z. B.:
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 $ custom
Wenn Sie beispielsweise PHPDOCS -Unterstützung für fließende Methoden in der Migration benötigen
$ table -> string ( " somestring " )-> nullable ()-> index ();
Ändern Sie nach dem Veröffentlichen des Anbieters einfach die Zeile include_fluent
in Ihrer Datei config/ide-helper.php
in:
' include_fluent ' => true ,
Dann führen Sie php artisan ide-helper:generate
Sie jetzt alle fließenden Methoden, die von Ihrer IDE erkannt werden.
Wenn Sie die factory()->create()
und factory()->make()
Methoden zur Rückgabe der richtigen Modellklasse wünschen, können Sie benutzerdefinierte Werksbauer mit der Zeile include_factory_builders
in Ihrer config/ide-helper.php
Datei aktivieren . Für Laravel 8 oder die neuesten.
' include_factory_builders ' => true ,
Damit dies funktioniert, müssen Sie auch die PHPStorm -Meta -Datei veröffentlichen (siehe unten).
Es ist möglich, eine PHPStorm -Meta -Datei zu generieren, um das Fabrikdesign -Muster zu unterstützen. Für Laravel bedeutet dies, dass wir Phpstorm verstehen lassen können, welche Art von Objekt wir aus dem IOC -Behälter lösen. Beispielsweise geben events
ein IlluminateEventsDispatcher
-Objekt zurück. Mit der Meta -Datei können Sie app('events')
aufrufen und die Dispatcher -Methoden automatisch vervollständigen.
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);
HINWEIS: Möglicherweise müssen Sie PHPStorm neu starten und sicherstellen, dass
.phpstorm.meta.php
indiziert ist.HINWEIS: Wenn Sie eine Fatalexception erhalten: Unterricht nicht gefunden, überprüfen Sie Ihre Konfiguration (z. B. S3 als Cloud -Treiber entfernen, wenn Sie S3 nicht konfigurieren. Entfernen Sie Redis ServiceProvider, wenn Sie es nicht verwenden).
Sie können den generierten Dateinamen über den config meta_filename
ändern. Dies kann für Fälle nützlich sein, in denen Sie die Unterstützung von PHPSTORM durch das Verzeichnis .phpstorm.meta.php/
: Alle dort platzierten Dateien analysieren möchten, falls Sie zusätzliche Dateien für PHPSTORM angeben möchten.
Der Laravel IDE-Helfergenerator ist Open-Sourcing-Software, die unter der MIT-Lizenz lizenziert wurde