Home  >  Article  >  Backend Development  >  How to create a custom artisan make command to create a new class file through laravel

How to create a custom artisan make command to create a new class file through laravel

不言
不言Original
2018-06-13 14:53:211831browse

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

##Add RepositoryMakeCommand to App\Console\Kernel.php

 protected $commands = [
  Commands\RepositoryMakeCommand::class
 ];

Test command
##Okay, now you can pass

make:repository

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 Laravel


About laravel 5.4 Methods to achieve infinite classification


The 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn