laravel通过创建自定义artisan make命令来新建类文件详解

发布时间 - 2026-01-11 02:50:15    点击率:

前言

本文主要跟大家介绍的是关于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 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# laravel  # artisan  # make  # 自定义命令  # artisan自定义命令  # laravel+vue组合的项目中引入ueditor方式(打包成组件形式)  # 在laravel中使用Symfony的Crawler组件分析HTML  # Laravel框架中扩展函数、扩展自定义类的方法  # PHP框架Laravel插件Pagination实现自定义分页  # Laravel中重写资源路由自定义URL的实现方法  # Laravel Validator自定义错误返回提示消息并在前端展示  # Laravel认证原理以及完全自定义认证详解  # 关于Laravel-admin的基础用法总结和自定义model详解  # Laravel5.5以下版本中如何自定义日志行为详解  # laravel框架学习笔记之组件化开发实现方法  # 自己的  # 的是  # 就会  # 好了  # 放在  # 相关内容  # 说了  # 不多  # 自定义  # 这篇文章  # 谢谢大家  # 装了  # 长了  # 就可以  # 而不是  # 系统自带  # 目录下  # 有疑问  # routes  # event 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现验证码(Captcha)功能  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  香港服务器网站推广:SEO优化与外贸独立站搭建策略  怎么用AI帮你设计一套个性化的手机App图标?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Python图片处理进阶教程_Pillow滤镜与图像增强  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  LinuxShell函数封装方法_脚本复用设计思路【教程】  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何在VPS电脑上快速搭建网站?  Laravel如何使用Eloquent进行子查询  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  如何在建站主机中优化服务器配置?  如何在建站之星绑定自定义域名?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何创建自定义中间件?(Middleware代码示例)  如何获取PHP WAP自助建站系统源码?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何使用查询构建器?(Query Builder高级用法)  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在云指建站中生成FTP站点?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何用好域名打造高点击率的自主建站?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel API资源类怎么用_Laravel API Resource数据转换  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  图册素材网站设计制作软件,图册的导出方式有几种?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何在IIS中新建站点并配置端口与物理路径?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel如何实现文件上传和存储?(本地与S3配置)  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  网站制作免费,什么网站能看正片电影?