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查询搜索引擎排名位置的代码
Jan 05 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
PHP输出日历表代码实例
Mar 27 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP7.0安装笔记整理
Aug 28 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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
一个odbc连mssql分页的类
2006/10/09 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
django定期执行任务(实例讲解)
2017/11/03 Python
python绘制立方体的方法
2018/07/02 Python
Python列表list排列组合操作示例
2018/12/18 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python logging添加filter教程
2019/12/24 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
python IDLE添加行号显示教程
2020/04/25 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
查摆问题整改措施范文
2014/10/11 职场文书
退伍军人感言
2015/08/01 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
nginx安装以及配置的详细过程记录
2021/09/15 Servers