首页 > 开发 > PHP > 正文

laravel通过创建自定义artisan make命令来新建类文件详解

2024-05-04 22:45:52
字体:
来源:转载
供稿:网友

前言

本文主要跟大家介绍的是关于laravel通过创建自定义artisan make命令来新建类文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

我们在laravel开发时经常用到artisan make:controller等命令来新建Controller、Model、Job、Event等类文件。 在Laravel5.2中artisan make命令支持创建如下文件:

 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

不过,有时候默认的并不能够满足我们的需求, 比方我们在项目中使用的Respository模式来进一步封装了Model文件,就需要经常创建Repository类文件了,时间长了就会想能不能通过artisan make:repository命令自动创建类文件而不是都每次手动创建。

系统自带的artisan make命令对应的PHP程序放在Illuminate/Foundation/Console目录下,我们参照Illuminate/Foundation/Console/ProviderMakeCommand类来定义自己的artisan make:repository命令。

一、创建命令类

在app/Console/Commands文件夹下创建RepositoryMakeCommand.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'; }}

二、创建命令类对应的模版文件

在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!  } }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表