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 if 想到的些问题
Mar 22 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
php中 $$str 中 "$$" 的详解
Jul 06 PHP
php去掉文件前几行的方法
Jul 29 PHP
Symfony2安装的方法(2种方法)
Feb 04 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 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中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP中常用的转义函数
2014/02/28 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
JavaScript面向对象编程
2008/03/02 Javascript
javascript add event remove event
2008/04/07 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
jquery实现垂直手风琴菜单
2020/03/04 jQuery
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
pygame实现飞机大战
2020/03/11 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
2014年健康教育实施方案
2014/02/17 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2015年幼师工作总结
2015/04/28 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
React配置子路由的实现
2021/06/03 Javascript