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 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
php在数组中查找指定值的方法
Mar 17 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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 错误处理经验分享
2011/10/11 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
构建Python包的五个简单准则简介
2015/06/15 Python
python自动翻译实现方法
2016/05/28 Python
利用python发送和接收邮件
2016/09/27 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
Linux下多个Python版本安装教程
2018/08/15 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
后勤人员岗位职责
2013/12/17 职场文书
安全责任书范文
2014/03/12 职场文书
小学生倡议书范文
2014/05/13 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis