您好我在下面的脚本中使用了php依赖注入。当注入的对象或类没有构造函数时,一切正常。但是这里的问题是当注入的类与参数一起获得构造函数时,注入失败。我想知道如何处理这种情况。
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
注意:为了便于理解,此示例已经过简化
答案 0 :(得分:0)
您需要添加一个定义,以便PHP-DI知道如何构造您的useMe
对象(在php 5.6下测试):
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions([
'useMe' => function () {
return new useMe('value_of_param');
},
]);
$container = $builder->build();
这在PHP-DI手册的PHP定义部分http://php-di.org/doc/php-definitions.html
中有解释您可能需要更改的其他一些事项:
使用.
代替+
来连接字符串:return "See you
later on other class with my parameter " . $this->param;
需要使用return
方法中的apple()
内容:return
$this->objects->go();