PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解
《PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解》要点:
本文介绍了PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解,希望对您有用。如果有疑问,可以联系我们。
PHP实例前言
PHP实例本文主要跟大家介绍的是关于laravel通过创建自定义artisan make命令来新建类文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧.
PHP实例我们在laravel开发时经常用到artisan make:controller
等命令来新建Controller、Model、Job、Event等类文件. 在Laravel5.2中artisan make
命令支持创建如下文件:
- PHP实例
- 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
PHP实例不过,有时候默认的并不能够满足我们的需求, 比方我们在项目中使用的Respository模式来进一步封装了Model文件,就需要经常创建Repository类文件了,时间长了就会想能不能通过artisan make:repository
命令自动创建类文件而不是都每次手动创建.
PHP实例系统自带的artisan make
命令对应的PHP程序放在Illuminate\Foundation\Console目录下,我们参照Illuminate\Foundation\Console\ProviderMakeCommand类来定义自己的artisan make:repository
命令.
PHP实例一、创建命令类
PHP实例在app\Console\Commands文件夹下创建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)
- {
- return $rootNamespace.'\Repositories';
- }
- }
PHP实例二、创建命令类对应的模版文件
PHP实例在app\Console\Commands\stubs下创建模版文件 .stub文件是make命令生成的类文件的模版,用来定义要生成的类文件的通用部分创建repository.stub模版文件:
- PHP实例
- 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!
- }
- }
PHP实例三、注册命令类
PHP实例将RepositoryMakeCommand添加到App\Console\Kernel.php中
- PHP实例
- protected $commands = [
- Commands\RepositoryMakeCommand::class
- ];
PHP实例测试命令
PHP实例好了, 现在就可以通过make:repository
命令来创建repository类文件了
- PHP实例
- php artisan make:repository TestRepository
- php artisan make:repository SubDirectory/TestRepository
PHP实例总结