0

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

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

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

    Class Product{

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

但我不断收到此错误

无法解析带有消息“条目“命名空间\到产品”的未捕获异常“异常”:__construct() 的参数 $root 没有定义或猜测的值

但是,如果我使用注释,这个问题将得到解决。但我真的不想在每次注入参数时都使用注释。

这里有什么问题?

谢谢

4

1 回答 1

0

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

您必须手动定义参数:

$container->set(
    'Namespace\To\Product',
    DI\object()->constructor(DI\get('root')
);
于 2016-09-19T16:02:30.353 回答