laravel 自定義artisan命令,新建repository等類檔案
阿新 • • 發佈:2018-12-20
在工作中,有時我們需要定製化一些命令,例如構建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.的反饋時,就說明我們的配置沒有問題了!