Пространство имен в basic приложении
Добавлено: 2020.10.28, 17:41
Вот развернул я свежее basic приложение. Все вроде бы работает, все Ок.
1. В папке config создал какой-нибудь DtoObject для хранения данных. К этому классу мне придется обращаться в разных частях приложения, в том числе и в конфигах.
2. И вот в файле, console.php, например, создаю экземпляр класса
И что дальше? Правильный ответ - class DtoObject not found
Почему? Потому, что app в пространстве имен app\config - это алиас, который будет сформирован после чтения конфига, и запуска приложения. Когда php-fpm пытается прочитать конфиг, об алиасах он еще ничего не знает.
Возможно я не прав, но это неверное поведение. Решается элементарно, в composer.json, в секции autoload
1. В папке config создал какой-нибудь DtoObject для хранения данных. К этому классу мне придется обращаться в разных частях приложения, в том числе и в конфигах.
Код: Выделить всё
<?php
namespace app\config;
class DtoObject {
// ...
}
Код: Выделить всё
$data = new DtoObject();
Почему? Потому, что app в пространстве имен app\config - это алиас, который будет сформирован после чтения конфига, и запуска приложения. Когда php-fpm пытается прочитать конфиг, об алиасах он еще ничего не знает.
Возможно я не прав, но это неверное поведение. Решается элементарно, в composer.json, в секции autoload
Код: Выделить всё
"autoload": {
"psr-4": {
"app\\": ""
}
}