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分页集合包括使用方法
Oct 21 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
全面了解PHP中的全局变量
Jun 17 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
Python面向对象特殊成员
2017/04/24 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
医生自荐信
2013/10/11 职场文书
销售演讲稿范文
2014/01/08 职场文书
个人授权委托书范本
2014/04/03 职场文书
驾驶员安全责任书
2014/07/22 职场文书
新员工辞职信范文
2015/05/12 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL