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


Posted in PHP onAugust 17, 2017

前言

本文主要跟大家介绍的是关于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!
  }
 }

三、注册命令类

将RepositoryMakeCommand添加到App\Console\Kernel.php中

protected $commands = [
  Commands\RepositoryMakeCommand::class
 ];

测试命令

好了, 现在就可以通过make:repository命令来创建repository类文件了

php artisan make:repository TestRepository

php artisan make:repository SubDirectory/TestRepository

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP下几种删除目录的方法总结
Aug 19 PHP
php中变量及部分适用方法
Mar 27 PHP
将php数组输出html表格的方法
Feb 24 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
PHP精确计算功能示例
Nov 29 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
Laravel中的Auth模块详解
Aug 17 #PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 #PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 #PHP
PHP编译configure时常见错误的总结
Aug 17 #PHP
基于PHP常用文件函数和目录函数整理
Aug 17 #PHP
PHP实现的堆排序算法详解
Aug 17 #PHP
基于php编程规范(详解)
Aug 17 #PHP
You might like
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
B2K与车机的中波PK
2021/03/02 无线电
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
php字符串分割函数用法实例
2015/03/17 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
代码分析Python地图坐标转换
2018/02/08 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
J2EE相关知识面试题
2013/08/26 面试题
2014年群众路线党员自我评议
2014/09/24 职场文书
小学见习报告
2014/10/31 职场文书
网络妈妈观后感
2015/06/08 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python 语言实现六大查找算法
2021/06/30 Python