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与MySQL交互使用详解
Oct 09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
require(),include(),require_once()和include_once()区别
Mar 27 PHP
php 全局变量范围分析
Aug 07 PHP
php 归并排序 数组交集
May 10 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
php遍历目录方法小结
Mar 10 PHP
PHP实现获取中英文首字母
Jun 19 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 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的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
Javascript的比较汇总
2016/07/25 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
一些Solaris面试题
2015/12/22 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
村官工作鉴定评语
2014/01/27 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
广告学毕业生求职信
2014/01/30 职场文书
市场营销方案范文
2014/03/11 职场文书
小班上学期评语
2014/05/05 职场文书
家长建议怎么写
2014/05/15 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
五水共治一句话承诺
2014/05/30 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
幼儿园开学通知
2015/04/24 职场文书
公司出差管理制度范本
2015/08/05 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers