В PHP-DI функция has() не работает для определения в файле

Используя файл определения php, я создал это определение

return [
'auth' => \DI\object('MyProject\Users\Handlers\Permissions')->lazy()
];

Но когда я использую функцию has(), чтобы проверить, существует ли определение, т.е.

$container->has('auth'); //this returns FALSE

но функция get() возвращает объект.

$container->get('auth') //returns the referenced object

РЕДАКТИРОВАТЬ: приложение немного сложное, поэтому я не могу разместить здесь весь код, но он предназначен для обхода ошибки, которую я получаю, когда я реализую определения таким образом.

$containerBuilder->addDefinitions([
'auth' => \DI\object('MyProject\Users\Handlers\Permissions')->lazy()
]);

Ошибка:

Неустранимая ошибка: необработанное исключение «InvalidArgumentException» с сообщением «Параметр ContainerBuilder:: addDefinitions () должен быть строкой или реализовывать ChainableDefinitionSource, указан массив

Спасибо за быстрый ответ.


person Stanley Ngumo    schedule 08.06.2016    source источник
comment
Это действительно не нормально, вы уверены, что конфиг правильно загружен? Не могли бы вы добавить больше кода (здесь или в выпуске GitHub), чтобы я мог на него взглянуть?   -  person Matthieu Napoli    schedule 08.06.2016
comment
@MatthieuNapoli Внесли изменения в вопрос   -  person Stanley Ngumo    schedule 08.06.2016


Ответы (2)


Учитывая ваше последнее редактирование, кажется, вы все еще используете PHP-DI 4.

В версии 5.0.0 добавлена ​​возможность добавления массивов: https://github.com/PHP-DI/PHP-DI/issues/218

person Matthieu Napoli    schedule 08.06.2016

Кроме того, функция has() возвращает значение FALSE, если определение не может быть полностью разрешено. Например, из моего примера ниже:

$containerBuilder->addDefinitions([
'auth' => \DI\object('MyProject\Users\Handlers\Permissions')->lazy()
]);

Если класс MyProject\Users\Handlers\Permissions не разрешен полностью

$container->has('auth') //это вернет логическое значение FALSE

Надеюсь, это поможет кому-то

person Stanley Ngumo    schedule 08.06.2016