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 相关文章推荐
一个分页的论坛
Oct 09 PHP
?算你??的 PHP 程式大小
Dec 06 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
php文件操作之小型留言本实例
Jun 20 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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
2006/12/23 PHP
MySQL数据源表结构图示
2008/06/05 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
python解析html开发库pyquery使用方法
2014/02/07 Python
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python数据操作方法封装类实例
2017/06/23 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
python关于倒排列的知识点总结
2020/10/13 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
商场促销活动总结
2014/07/10 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
个人合作协议范本
2015/08/06 职场文书