From 8901c3163100dc528b28fe94ea32ec4f97def585 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Wed, 21 Dec 2022 00:28:02 +0800 Subject: [PATCH] fix command loader relative path --- src/ZM/Command/InitCommand.php | 12 ++++-------- src/ZM/ConsoleApplication.php | 14 +++++++++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/ZM/Command/InitCommand.php b/src/ZM/Command/InitCommand.php index 411a7372..0be2c245 100644 --- a/src/ZM/Command/InitCommand.php +++ b/src/ZM/Command/InitCommand.php @@ -9,7 +9,6 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\ConsoleSectionOutput; use Symfony\Component\Console\Output\OutputInterface; use ZM\Exception\InitException; -use ZM\Utils\ZMUtil; #[AsCommand(name: 'init', description: '初始化框架运行的基础文件')] class InitCommand extends Command @@ -46,7 +45,9 @@ class InitCommand extends Command 'Custom\\' => 'src/Custom', ], 'files' => [ - 'src/Custom/global_function.php', + 'src/Globals/global_functions.php', + 'src/Globals/global_defines_app.php', + 'src/Globals/global_class_alias.php', ], ]; @@ -185,12 +186,7 @@ class InitCommand extends Command private function getVendorPath(string $file): string { - try { - $package_name = ZMUtil::getComposerMetadata()['name']; - } catch (\JsonException) { - throw new InitException('无法读取框架包的 composer.json', '请检查框架包完整性,或者重新安装框架包'); - } - return $this->base_path . '/vendor/' . $package_name . $file; + return FRAMEWORK_ROOT_DIR . $file; } private function extractFiles(array $files, OutputInterface $output): void diff --git a/src/ZM/ConsoleApplication.php b/src/ZM/ConsoleApplication.php index a20fd9a0..3399a9eb 100644 --- a/src/ZM/ConsoleApplication.php +++ b/src/ZM/ConsoleApplication.php @@ -28,7 +28,19 @@ final class ConsoleApplication extends Application } // 初始化命令 - $command_classes = FileSystem::getClassesPsr4(zm_dir('src/ZM/Command'), 'ZM\\Command'); + $command_classes = []; + // 先加载框架内置命令 + $command_classes = array_merge( + $command_classes, + FileSystem::getClassesPsr4(FRAMEWORK_ROOT_DIR . '/src/ZM/Command', 'ZM\\Command') + ); + // 再加载用户自定义命令(如存在) + if (is_dir(zm_dir('src/Command'))) { + $command_classes = array_merge( + $command_classes, + FileSystem::getClassesPsr4(zm_dir('src/Command'), 'Command') + ); + } $commands = []; foreach ($command_classes as $command_class) { try {