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更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
PHP仿盗链代码
Jun 03 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
php 批量替换html标签的实例代码
Nov 26 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 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
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
PHP 8新特性简介
2020/08/18 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
js实现下一页页码效果
2017/03/07 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
客服主管岗位职责
2013/12/13 职场文书
跟单文员岗位职责
2014/01/03 职场文书
服装采购员岗位职责
2014/03/15 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年体育部工作总结
2014/11/13 职场文书
全国助残日活动总结
2015/05/11 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
Pandas加速代码之避免使用for循环
2021/05/30 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
Python 绘制多因子柱状图
2022/05/11 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android