The following article mainly introduces to you the relevant information about how laravel creates new class files by creating a custom artisan make command. Friends in need can refer to it. Let's take a look together.
Laravel provides powerful console commands through Artisan to handle non-browser business logic.
Preface
This article mainly introduces you to laravel’s creation of new class files by creating a custom artisan make command. The content is shared for everyone’s reference and study. I won’t say much below, let’s take a look at the detailed introduction.
We often use artisan make:controller
and other commands when developing laravel to create new Controller, Model, Job, Event and other class files. In Laravel5.2, the artisan make
command supports the creation of the following files:
make:auth Scaffold basic login and registration views and routes make:console Create a new Artisan command make:controller Create a new controller class make:event Create a new event class make:job Create a new job class make:listener Create a new event listener class make:middleware Create a new middleware class make:migration Create a new migration file make:model Create a new Eloquent model class make:policy Create a new policy class make:provider Create a new service provider class make:request Create a new form request class make:seeder Create a new seeder class make:test Create a new test class
However, sometimes the default one does not meet our needs requirements, for example, if we use the Respository mode in the project to further encapsulate the Model file, we need to frequently create Repository class files. Over time, we will wonder if we can automatically create classes through the artisan make:repository
command. files instead of being created manually each time.
The PHP program corresponding to the artisan make
command that comes with the system is placed in the Illuminate\Foundation\Console directory. We refer to the Illuminate\Foundation\Console\ProviderMakeCommand class to define our own artisan make:repository
command.
1. Create the command class
Create the RepositoryMakeCommand.php file in the app\Console\Commands folder. The specific procedure is as follows :
namespace App\Console\Commands; use Illuminate\Console\GeneratorCommand; class RepositoryMakeCommand extends GeneratorCommand { /** * The console command name. * * @var string */ protected $name = 'make:repository'; /** * The console command description. * * @var string */ protected $description = 'Create a new repository class'; /** * The type of class being generated. * * @var string */ protected $type = 'Repository'; /** * Get the stub file for the generator. * * @return string */ protected function getStub() { return __DIR__.'/stubs/repository.stub'; } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Repositories'; } }
2. Create the template file corresponding to the command class
Create a template file under app\Console\Commands\stubs. The stub file is the template of the class file generated by the make command. It is used to define the common part of the class file to be generated. Create the repository.stub template file:
namespace DummyNamespace; use App\Repositories\BaseRepository; class DummyClass extends BaseRepository { /** * Specify Model class name * * @return string */ public function model() { //set model name in here, this is necessary! } }
3. Register command class
protected $commands = [ Commands\RepositoryMakeCommand::class ];
Test command
##Okay, now you can pass
Command to create repository class file
php artisan make:repository TestRepository php artisan make:repository SubDirectory/TestRepository
The above is the entire content of this article. I hope it will be helpful to everyone's learning. Please pay attention to more related content. PHP Chinese website!
Related recommendations:
About the implementation method of rewriting resource routing custom URL in LaravelAbout laravel 5.4 Methods to achieve infinite classificationThe above is the detailed content of How to create a custom artisan make command to create a new class file through laravel. For more information, please follow other related articles on the PHP Chinese website!