ソースを参照

refactor(extension): 优化扩展管理命令实现

- 使用 extension_path 函数替代 Helper 类方法
- 统一字符串插值语法,提升代码一致性
- 更新命名空间引用,确保类加载正确性
- 添加 mbstring 扩展依赖声明
- 优化配置获取逻辑中的变量替换方式
- 引入 BadMethodCallException 类改善错误处理
runphp 3 ヶ月 前
コミット
96d2ead825
4 ファイル変更13 行追加10 行削除
  1. 1 0
      composer.json
  2. 9 8
      src/Command/ExtensionManagementCommand.php
  3. 1 1
      src/Migrate.php
  4. 2 1
      src/Trait/ConfigTrait.php

+ 1 - 0
composer.json

@@ -8,6 +8,7 @@
   ],
   "require": {
     "php": ">=8.3",
+    "ext-mbstring": "*",
     "robmorgan/phinx": "^0.16.10",
     "six-shop/core": ">=0.6 <1.0"
   },

+ 9 - 8
src/Command/ExtensionManagementCommand.php

@@ -10,6 +10,7 @@ use think\console\Input;
 use think\console\input\Argument;
 use think\console\Output;
 use think\console\Table;
+use function SixShop\Core\extension_path;
 
 class ExtensionManagementCommand extends Command
 {
@@ -60,9 +61,9 @@ class ExtensionManagementCommand extends Command
                     $output->error('请指定要创建的扩展模块名');
                     return self::FAILURE;
                 }
-                $basePath = Helper::extension_path($module);
+                $basePath = extension_path($module);
                 if (is_dir($basePath)) {
-                    $output->error("扩展 {$module} 已存在");
+                    $output->error("扩展 $module 已存在");
                     return self::FAILURE;
                 }
                 // 创建目录结构
@@ -87,13 +88,13 @@ class ExtensionManagementCommand extends Command
                 $infoExport = str_replace(['array (', ')'], ['[', ']'], $infoExport);
                 file_put_contents($basePath . 'info.php', "<?php\ndeclare(strict_types=1);\nreturn " . $infoExport . ";\n");
                 // Extension.php
-                $extClass = "<?php\ndeclare(strict_types=1);\n\nnamespace SixShop\\Extension\\{$module};\n\nuse SixShop\\Extension\\core\\ExtensionAbstract;\n\nclass Extension extends ExtensionAbstract\n{\n    protected function getBaseDir(): string\n    {\n        return dirname(__DIR__);\n    }\n}\n";
+                $extClass = "<?php\ndeclare(strict_types=1);\n\nnamespace SixShop\\Extension\\$module;\n\nuse SixShop\\Extension\\core\\ExtensionAbstract;\n\nclass Extension extends ExtensionAbstract\n{\n    protected function getBaseDir(): string\n    {\n        return dirname(__DIR__);\n    }\n}\n";
                 file_put_contents($basePath . 'src/Extension.php', $extClass);
                 // README.md
                 file_put_contents($basePath . 'README.md', "# $module\n\n扩展说明\n");
                 // config.php
                 file_put_contents($basePath . 'config.php', "<?php\ndeclare(strict_types=1);\n\nreturn [];\n");
-                $output->warning("扩展 {$module} 创建成功,目录:$basePath");
+                $output->warning("扩展 $module 创建成功,目录:$basePath");
                 break;
             case 'install':
                 if (!$module) {
@@ -101,7 +102,7 @@ class ExtensionManagementCommand extends Command
                     return self::FAILURE;
                 }
                 $extensionManager->install($module);
-                $output->warning("扩展 {$module} 安装成功");
+                $output->warning("扩展 $module 安装成功");
                 break;
             case 'enable':
                 if (!$module) {
@@ -109,7 +110,7 @@ class ExtensionManagementCommand extends Command
                     return self::FAILURE;
                 }
                 $extensionManager->enable($module);
-                $output->warning("扩展 {$module} 启用成功");
+                $output->warning("扩展 $module 启用成功");
                 break;
             case 'disable':
                 if (!$module) {
@@ -117,7 +118,7 @@ class ExtensionManagementCommand extends Command
                     return self::FAILURE;
                 }
                 $extensionManager->disable($module);
-                $output->warning("扩展 {$module} 禁用成功");
+                $output->warning("扩展 $module 禁用成功");
                 break;
             case 'uninstall':
                 if (!$module) {
@@ -125,7 +126,7 @@ class ExtensionManagementCommand extends Command
                     return self::FAILURE;
                 }
                 $extensionManager->uninstall($module);
-                $output->warning("扩展 {$module} 卸载成功");
+                $output->warning("扩展 $module 卸载成功");
                 break;
             default:
                 $output->error('不支持的操作类型: ' . $action);

+ 1 - 1
src/Migrate.php

@@ -148,7 +148,7 @@ class Migrate
     {
         $default = $this->app->config->get('database.default');
 
-        $config = $this->app->config->get("database.connections.{$default}");
+        $config = $this->app->config->get("database.connections.$default");
 
         if (0 == $config['deploy']) {
             $dbConfig = [

+ 2 - 1
src/Trait/ConfigTrait.php

@@ -3,6 +3,7 @@ declare(strict_types=1);
 
 namespace SixShop\System\Trait;
 
+use BadMethodCallException;
 use SixShop\System\ExtensionManager;
 
 trait ConfigTrait
@@ -40,7 +41,7 @@ trait ConfigTrait
         if (str_starts_with($name, 'get')) {
             $name = lcfirst(substr($name, 3));
         } else {
-            throw new \BadMethodCallException("Method {$name} does not exist.");
+            throw new BadMethodCallException("Method $name does not exist.");
         }
         $name = strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $name));
         return $this->getConfig($name);