Пространство имен пользовательских компонентов Yii2 - PullRequest
0 голосов
/ 30 мая 2018

У меня есть класс компонента, расположенный по следующему пути:

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

и я хочу использовать пространство имен по умолчаниюдля этого класса:

бэкэнд пространства имен \ компоненты;

Я пытался установить псевдонимы в моих confing/main.php:

...
'aliases' => [
    '@backend/components' => '@backend/components/component-name'
],
...

, ноЯ знаю, что это неправильное решение, потому что оно нарушило логику пространства имен для других классов, расположенных в backend/components.

Как я могу установить одинаковое пространство имен backend\components для обоих классов в @backend/components и @backend/components/component-name?

1 Ответ

0 голосов
/ 30 мая 2018

Я предлагаю использовать автозагрузчик composer для этой задачи - он отлично работает, даже если вы указываете несколько возможных путей для одного класса.Измените свой 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';
...