tp5 tp6 自动载入自定义命令类

2024-03-06 19:12

本文主要是介绍tp5 tp6 自动载入自定义命令类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tp5 的自动加载命令

将以下代码放在tp5的 application\common.php 内并执行函数,系统会自动的获取app下的各应用内的 command 目录的命令,注意,不要在application\command.php


if (!function_exists('addDefaultCommands')) {function addDefaultCommands(){$dir = __DIR__;$items =   scandir($dir);$dirs = [];foreach ($items as $item) {if ($item === '.' || $item === '..') {continue;}$path = $dir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'command';if (@is_dir($path)) {$dirs[$item][] = $path;}}$dirs['base'][] = $dir . DIRECTORY_SEPARATOR . 'command';$commands = [];foreach ($dirs as $model => $dir) {foreach ($dir as $key => $value) {if (is_dir($value)) {$Files = scandir($value);foreach ($Files as $file) {if ($file === '.' || $file === '..') {continue;}$model_ = ($model !== 'base') ? $model . '\\' : '';$className = 'app\\' . $model_ . 'command\\' . basename($file, '.php');if (class_exists($className)) {$commands[$model . ':' . strtolower(basename($file, '.php'))] = $className;}}}}}\think\Console::addDefaultCommands($commands);}
}
addDefaultCommands();

 Tp6的操作如下:

将此service正常导入到service配置中,将现有的命令行注释掉引用即可

<?phpnamespace app\common\service\Console;use think\facade\Cache;
use think\Service as BaseService;/*** 自动注册模块命令*/
class AutoRegModeConsoleService extends BaseService
{public function boot(){$this->commands($this->getFile());return true;}function getFile(){$dir =    root_path() . 'app';$items =   scandir($dir);$dirs = [];foreach ($items as $item) {if ($item === '.' || $item === '..') {continue;}$path = $dir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'command';if (@is_dir($path)) {$dirs[$item][] = $path;}}$dirs['base'][] = $dir . DIRECTORY_SEPARATOR . 'command';$commands = [];foreach ($dirs as $model => $dir) {foreach ($dir as $key => $value) {if (is_dir($value)) {$Files = scandir($value);foreach ($Files as $file) {if ($file === '.' || $file === '..') {continue;}$model_ = ($model !== 'base') ? $model . '\\' : '';$className = 'app\\' . $model_ . 'command\\' . basename($file, '.php');if (class_exists($className)) {$commands[$model . ':' . strtolower(basename($file, '.php'))] = $className;}}}}}return $commands;}
}
<?phpuse app\common\service\Console\AutoRegModeConsoleService;
use app\common\service\MultiApp\Service;// 系统服务定义文件
// 服务在完成全局初始化之后执行
return [Service::class,AutoRegModeConsoleService::class,
];

 

这篇关于tp5 tp6 自动载入自定义命令类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781041

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订