在 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
希望这对某人有所帮助
使用 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
希望这对某人有所帮助