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 相关文章推荐
再次研究下cache_lite
Feb 14 PHP
redis 队列操作的例子(php)
Apr 12 PHP
php字符串截取的简单方法
Jul 04 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
php取出数组单个值的方法
Mar 12 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
PHP新手入门学习方法
2011/05/08 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
JS回调函数深入理解
2019/10/16 Javascript
详解JS预解析原理
2020/06/16 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
Python sqlite3事务处理方法实例分析
2017/06/19 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
查看django版本的方法分享
2018/05/14 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
个人教师自我评价范文
2013/12/02 职场文书
护士思想汇报
2014/01/12 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
上班离岗检讨书
2014/01/27 职场文书
社区科普工作方案
2014/06/03 职场文书
物流管理专业自荐信
2014/06/23 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
单位实习鉴定评语
2015/01/04 职场文书
CAD实训总结范文
2015/08/03 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书