1. 程式人生 > >laravel 自定義artisan命令,新建repository等類檔案

laravel 自定義artisan命令,新建repository等類檔案

在工作中,有時我們需要定製化一些命令,例如構建repository層,會建立很多的repository檔案,如果一一建立,每次都要書寫名稱空間太麻煩,可不可以自定義artisan命令呢,像建立Controller檔案一樣,省卻書寫固定的程式碼,還好laravel給我們提供了這樣自定義的機制.

一 建立命令類

在vendor\laravel\framework\src\Illuminate\Foundation\Console目錄下記錄著artisan make命令對應的php檔案,比如說經常使用的make:model命令對應的ModelMakeCommand.php檔案.但是在這裡我們將仿照ProviderMakeCommand.php檔案自定義我們的repository命令:

1.建立Command目錄
在app\Console目錄下新建Commands目錄

2.建立RepositoryMakeCommand.php檔案,並新增命令執行的內容
在app\Console\Command目錄下,新建RepositoryMakeCommand.php檔案,並新增以下內容,

<?php
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)
    {
    //注意儲存的目錄,我這裡把Repository目錄放在了Http下,可以根據自己的習慣自定義
        return $rootNamespace.'\Http\Repositories';
    }
}

二 建立命令類對應的模板

1.建立存放模板檔案的目錄stubs
在app\Console\Command目錄下,新建stubs目錄

2.建立模板檔案repository.stub並新增模板
在app\Console\Command\stubs 目錄下,新建repository.stub檔案,並新增以下模板內容

<?php
namespace DummyNamespace;


class DummyClass
{

    /*
    *    將需要使用的Model通過建構函式例項化
    */
    public function __construct ()
    {

    }

}

三 註冊命令類

將建立的RepositoryMakeCommand 新增到app\Console\Kernel.php中

 protected $commands = [
        // 建立生成repository檔案的命令
        Commands\RepositoryMakeCommand::class
    ];

四 測試

以上就完成了命令類的自定義,下面就可以使用了

 php artisan make:repository UserRepository

當看到Repository created successfully.的反饋時,就說明我們的配置沒有問題了!