Используя файл определения 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, заданный массив
Спасибо за быстрый ответ.
С учетом вашего последнего редактирования кажется, что вы все еще используете PHP-DI 4.
Возможность добавления массивов была добавлена в версию 5.0.0: https://github.com/PHP-DI/PHP-DI/issues/218
И, как дополнение, есть () Функция возвращает значение FALSE, если определение не может быть полностью разрешено. Например из моего примера ниже:
$containerBuilder->addDefinitions([
'auth' => \DI\object('MyProject\Users\Handlers\Permissions')->lazy()
]);
Если класс MyProject \ Users \ Обработчики \ Permissions не полностью решен
$ container-> has (‘auth’) // это вернет логическое значение FALSE
Надеюсь, это поможет кому-то