在 PHP-DI 中,has() 函数不适用于文件中的定义

In PHP-DI the has() function not working for definition in file

使用 php 定义文件我创建了这个定义

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

但是当我使用 has() 函数来检查定义是否存在时,即

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

但是 get() 函数设法 return 对象。

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

编辑: 该应用程序有点复杂,所以不能将所有代码放在这里,但它的目的是绕过我以这种方式实现定义时遇到的错误

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

错误是:

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'ContainerBuilder::addDefinitions() parameter must be a string or implement ChainableDefinitionSource, array given

感谢您的快速回复。

鉴于您上次的编辑,您似乎仍在使用 PHP-DI 4。

添加数组的功能已添加到版本 5.0.0:https://github.com/PHP-DI/PHP-DI/issues/218

并且作为附录,has() 函数 returns 如果无法完全解析定义,则为 FALSE 值。例如我下面的例子:

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

如果classMyProject\Users\Handlers\Permissions没有完全解决

$container->has('auth') //this will return a FALSE boolean value

希望这对某人有所帮助