我们在laravel开发时经常用到artisan make:controller等命令来新建Controller、Model、Job、Event等类文件。 在Laravel5.2中artisan make命令支持创建如下文件:
不过,有时候默认的并不能够满足我们的需求, 比方我们在项目中使用的Respository模式来进一步封装了Model文件,就需要经常创建Repository类文件了,时间长了就会想能不能通过artisan make:repository命令自动创建类文件而不是都每次手动创建。
系统自带的artisan make命令对应的PHP程序放在Illuminate\Foundation\Console目录下,我们参照Illuminate\Foundation\Console\ProviderMakeCommand类来定义自己的artisan make:repository命令。
我们首先通过自动创建一个类,然后改造它:
php artisan make:Command RepositoryMakeCommand
我们将其改正成:
注意所有的更改 尤其是红色和绿色的替代
二、创建命令类对应的模版文件
在app\Console\Commands\stubs下创建模版文件 .stub文件是make命令生成的类文件的模版,用来定义要生成的类文件的通用部分
创建repository.stub模版文件:
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!
}
}
三、注册命令类
将RepositoryMakeCommand添加到App\Console\Kernel.php中
protected$commands = [ Commands\RepositoryMakeCommand::class ];
测试命令
好了, 现在就可以通过make:repository命令来创建repository类文件了
php artisan make:repository TestRepository
php artisan make:repository SubDirectory/TestRepository