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



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

return [
'auth' => DIobject('MyProjectUsersHandlersPermissions')->lazy()
];

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

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

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

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

编辑:该应用程序有点复杂,因此无法将所有代码放在这里,但它旨在绕过我以这种方式实现定义时出现的错误

$containerBuilder->addDefinitions([
'auth' => DIobject('MyProjectUsersHandlersPermissions')->lazy()
]);

错误是:

致命错误:未捕获的异常"无效参数异常"与 消息 'ContainerBuilder::addDefinitions() 参数必须是字符串 或实现 ChainableDefinitionSource,数组给定

感谢您的快速回复。

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

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

作为附录,如果定义无法完全解析,has() 函数将返回一个 FALSE 值。例如,从我下面的例子中:

$containerBuilder->addDefinitions([
'auth' => DIobject('MyProjectUsersHandlersPermissions')->lazy()
]);

如果类 MyProject\Users\Handlers\Permissions 未完全解析

$container->has('auth')//这将返回一个 FALSE 布尔值

希望这对某人有所帮助

相关内容

  • 没有找到相关文章

最新更新