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配置中,将现有的命令行注释掉引用即可

<?php

namespace 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;
	}
}
<?php

use app\common\service\Console\AutoRegModeConsoleService;
use app\common\service\MultiApp\Service;

// 系统服务定义文件
// 服务在完成全局初始化之后执行
return [

	Service::class,
	AutoRegModeConsoleService::class,
];

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值