La colonne de didacticiel suivante de laravel présentera la commande Make personnalisée de Laravel pour générer la classe Service. J'espère qu'elle sera utile aux amis dans le besoin !
L'environnement que j'utilise est : Laravel Framework 8.40.0
.
C:\www\wwwroot\laravel8>php artisan --version Laravel Framework 8.40.0
Pour des tutoriels sur la production de connaissances précoces, veuillez vous référer à mon autre blog Laravel custom Make command pour générer des classes cibles.
Exécutez la commande suivante
php artisan make:command MakeService
pour générer le fichier de commande Console/Commands/MakeService.php
.
Modifier la classe héritée
Modifiez la classe héritée en GeneratorCommand
, et l'espace de noms de cette classe est IlluminateConsoleGeneratorCommand
.
supprime la méthode d'instanciation et la fonction handle
implémente une méthode getStub
.
Définissez l'attribut name
.
Modifiez l'attribut $signature
en attribut name
et définissez la commande :
protected $name = 'make:service';
Définissez le paramètre de type type
valeur d'attribut type
, ce que nous générons est service
, donc l'attribut que nous définissons est Service
.
protected $type = 'Service';
Le type de type est défini par vous-même. Il n'a pas de signification particulière et n'a pas besoin d'être défini. La valeur de l'attribut
type vous donne uniquement un rappel amical lors de la création d'une erreur, comme indiqué ci-dessous :
C:\www\wwwroot\laravel8>php artisan make:service TestService already exists! C:\www\wwwroot\laravel8>php artisan make:service TestService Service already exists!
Le premier est l'effet de la non définition de l'attribut type
. Le second est l'effet de la définition de l'attribut type
.
Les types officiellement utilisés sont : Contrôleur, Middleware, Cast, Channel...
Modifiez d'autres attributs selon vos propres besoins
Définissez l'emplacement du Stub et l'espace de commande
L'emplacement du Stub se trouve dans le répertoire racine Stubs/service.stub
. L'espace de noms
se trouve dans le répertoire app
Services
.
L'exemple de code est le suivant :
<?php namespace App\Console\Commands; use Illuminate\Console\GeneratorCommand; class MakeService extends GeneratorCommand{ /** * The console command name. * * @var string */ protected $name = 'make:service'; /** * The console command description. * * @var string */ protected $description = '生成service对象类'; /** * The type of class being generated. * * @var string */ protected $type = 'Service'; /** * Get the stub file for the generator. * * @return string */ protected function getStub() { // Implement getStub() method. return $this->laravel->basePath('/stubs/service.stub'); } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Services'; }}
Mon fichier de service n'a actuellement pas besoin. hériter ou dépendre de quelle catégorie. Donc c'est relativement simple. Si vous avez des besoins particuliers, vous pouvez prolonger l’opération. L'exemple de code
est le suivant :
<?phpnamespace DummyNamespace;class DummyClass{ //}
DummyClass
etDummyNamespace
seront automatiquement remplacés par le nom de classe généré automatiquement et l'espace de noms défini dans la classeGeneratorCommand
héritée .
Il est recommandé d'utiliser les invites de syntaxe de l'éditeur pour obtenir un effet d'invite plus convivial.
En outre, vous pouvez également utiliser les méthodes d'écriture Larave
et {{ class }}
intégrées à {{ namespace }}
.
Exécutez la commande suivante
php artisan make:service IndexService
Il peut être généré normalement et avec succès
C:\www\wwwroot\laravel8>php artisan make:service IndexService Service created successfully.
Le répertoire du fichier généré est app/Services/IndexService.php
, les fichiers générés sont les suivants :
<?php namespace App\Services; class IndexService{ //}
Recommandations associées : Les cinq derniers didacticiels vidéo Laravel
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!