无法使用 PHP-DI 将定义的参数注入构造函数
Trouble injecting defined parameters into constructor using PHP-DI
这可能看起来很简陋,但我似乎无法在不使用注释的情况下直接将任何参数注入我的 class 构造函数。下面是定义和 class 调用
$shell->set('root','[Root Definition Here]');
$shell->make('Namespace\To\Product');
Class Product{
public function __construct($root){
//coding continues here
}
}
但我一直收到这个错误
Uncaught exception 'Exception' with message 'Entry
"Namespace\To\Product" cannot be resolved:
Parameter $root of __construct() has no value defined or guessable
不过,如果我使用注解,这个问题就会得到解决。但我真的不想每次注入参数时都求助于注释。
这里有什么问题?
谢谢
PHP-DI 使用类型提示而不是参数名称进行注入。因此,如果 $root
有类型提示(例如 Foo\Bar $root
),它会起作用,但现在它无法起作用。
您必须手动定义参数:
$container->set(
'Namespace\To\Product',
DI\object()->constructor(DI\get('root')
);
这可能看起来很简陋,但我似乎无法在不使用注释的情况下直接将任何参数注入我的 class 构造函数。下面是定义和 class 调用
$shell->set('root','[Root Definition Here]');
$shell->make('Namespace\To\Product');
Class Product{
public function __construct($root){
//coding continues here
}
}
但我一直收到这个错误
Uncaught exception 'Exception' with message 'Entry "Namespace\To\Product" cannot be resolved: Parameter $root of __construct() has no value defined or guessable
不过,如果我使用注解,这个问题就会得到解决。但我真的不想每次注入参数时都求助于注释。
这里有什么问题?
谢谢
PHP-DI 使用类型提示而不是参数名称进行注入。因此,如果 $root
有类型提示(例如 Foo\Bar $root
),它会起作用,但现在它无法起作用。
您必须手动定义参数:
$container->set(
'Namespace\To\Product',
DI\object()->constructor(DI\get('root')
);