使用PHP-DI将定义的参数注入构造函数时遇到问题

时间:2016-09-19 14:23:22

标签: php dependency-injection constructor php-di

这可能看起来很简陋但我似乎无法直接将任何参数注入我的类构造函数而不使用注释。下面是定义和名为

的类
    $shell->set('root','[Root Definition Here]');

    $shell->make('Namespace\To\Product');

    Class Product{

          public function __construct($root){
               //coding continues here
          }
    }

但我一直收到这个错误

  

未捕获的例外'例外'有消息'条目   "命名空间\至\产品"无法解决:   __construct()的参数$ root没有定义或可猜测的值

但是,如果我使用注释,此问题将得到解决。但是每次我注入参数时,我真的不想求助于注释。

这里的问题是什么?

由于

1 个答案:

答案 0 :(得分:0)

PHP-DI使用类型提示注入,而不是参数名称。因此,如果$root有类型提示(例如Foo\Bar $root),它会起作用,但现在它无法正常工作。

您必须手动定义参数:

$container->set(
    'Namespace\To\Product',
    DI\object()->constructor(DI\get('root')
);