Пространство имен в basic приложении

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Пространство имен в basic приложении

Сообщение proctoleha »

Вот развернул я свежее basic приложение. Все вроде бы работает, все Ок.

1. В папке config создал какой-нибудь DtoObject для хранения данных. К этому классу мне придется обращаться в разных частях приложения, в том числе и в конфигах.

Код: Выделить всё

<?php
namespace app\config;

class DtoObject {
    // ...
}
2. И вот в файле, console.php, например, создаю экземпляр класса

Код: Выделить всё

$data = new DtoObject();
И что дальше? Правильный ответ - class DtoObject not found

Почему? Потому, что app в пространстве имен app\config - это алиас, который будет сформирован после чтения конфига, и запуска приложения. Когда php-fpm пытается прочитать конфиг, об алиасах он еще ничего не знает.

Возможно я не прав, но это неверное поведение. Решается элементарно, в composer.json, в секции autoload

Код: Выделить всё

"autoload": {
        "psr-4": {
            "app\\": ""
        }
    }
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Пространство имен в basic приложении

Сообщение maleks »

Я в своей старой сборке в console.php сразу обнаружил вот это:
Yii::setAlias('@tests', dirname(__DIR__) . '/tests/codeception');
, может и с @app надо в таком случае аналогично обойтись?
Yii2 universal module sceleton - for basic and advanced templates
Ответить