带参数的php依赖注入
您好,我在下面的脚本中使用php依赖项注入。当注入的对象或类没有构造函数时,一切都可以工作。但这里的问题是,当注入的类获得一个构造函数和参数时,注入失败。我想知道如何处理这种情况带参数的php依赖注入,php,dependency-injection,Php,Dependency Injection,您好,我在下面的脚本中使用php依赖项注入。当注入的对象或类没有构造函数时,一切都可以工作。但这里的问题是,当注入的类获得一个构造函数和参数时,注入失败。我想知道如何处理这种情况 require 'vendor/autoload.php'; class useMe { private $param ; function __construct($param) { $this->param = $param ; } public functio
require 'vendor/autoload.php';
class useMe {
private $param ;
function __construct($param) {
$this->param = $param ;
}
public function go() {
return "See you later on other class with my parameter " . $this->param;
}
} // end of useMe Class
class needInjection {
private $objects ;
public function __construct(useMe $objects) {
$this->objects = $objects ;
}
public function apple() {
return $this->objects->go();
}
} // end of needInjection
/** Implementing now injection **/
$container = DI\ContainerBuilder::buildDevContainer();
// adding needInjection class dependency
$needInjection = $container->get('needInjection');
echo $needInjection->apple() ; // this fails due to parameter passed to the constructor function of useMe class
注意:为了便于理解,这个例子已经简化了您需要添加一个定义,以便PHP-DI知道如何构造您的
useMe
对象(在PHP5.6下测试):
PHP-DI手册中关于PHP定义的部分对此进行了解释:
您可能还需要更改一些其他事项:
而不是+
连接字符串:返回“再见”
稍后,使用“我的参数”创建另一个类$这个->参数代码>
apple()
method:return中返回something
$this->objects->go()代码>
useMe
类中的$aparam
是什么?应该是$this->param=$param代码>(分号前也没有空格)我强烈建议不要根据评论编辑带有更正的初始帖子。。。这可能会让其他人误入歧途——特别是如果你仍然有问题的话,这个答案的hanks@astrangeloop现在就可以了……所以我宣布这个问题已经解决
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions([
'useMe' => function () {
return new useMe('value_of_param');
},
]);
$container = $builder->build();