无法使用 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')
);