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分页原理及实现
Jan 02 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php 文件上传类代码
Aug 06 PHP
PHP详解ASCII码对照表与字符转换
Dec 05 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
php绘制一个扇形的方法
Jan 24 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
php数组函数array_walk用法示例
May 26 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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
德生1994机评
2021/03/02 无线电
php实现的xml操作类
2016/01/15 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
python3.5仿微软计算器程序
2020/03/30 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
Python中的元组介绍
2019/01/28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python简易版图书管理系统
2019/08/12 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
如何获得EntityManager
2014/02/09 面试题
大学新生欢迎词
2014/01/10 职场文书
在校生自我鉴定
2014/01/23 职场文书
《落花生》教学反思
2014/02/25 职场文书
2014高考励志标语
2014/06/05 职场文书
讲座新闻稿
2015/07/18 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
frg-100简单操作(设置)说明
2022/04/05 无线电