Yii2 自定义组件命名空间

Yii2 custom component namespace

我有一个组件 class 位于以下路径:

@backend/components/component-name/ComponentClass.php

并想为此 class 使用默认命名空间:

namespace backend\components;

我尝试在 confing/main.php:

中设置别名
...
'aliases' => [
    '@backend/components' => '@backend/components/component-name'
],
...

但我知道这是错误的决定,因为它破坏了位于 backend/components.

中的其他 classes 的命名空间逻辑

如何为 @backend/components@backend/components/component-name 中的 class 设置相同的命名空间 backend\components

我建议为此任务使用 composer autoloader - 即使您为单个 class 提供多个可能的路径,它也能正常工作。将 composer.json autoload 部分编辑为:

"autoload": {
    "psr-4": {
        "backend\": "backend/",
        "backend\components\": "backend/components/component-name/",
        ...
    }
},

并且 运行 在控制台中:

composer dump-autoload

确保您在 index.php:

中加载作曲家自动加载器
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';