Внедрение зависимостей — проблема с введением определенных параметров в конструктор с использованием PHP-DI

Это может показаться рудиментарным, но я не могу напрямую вводить какие-либо параметры в конструктор моего класса без использования аннотаций. Ниже дано определение и класс называется

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

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

Class Product{

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

Но я продолжаю получать эту ошибку

Uncaught исключение «Exception» с сообщением «Entry
«Пространство имен \ To \ Product» не может быть разрешено:
Параметр $ root для __construct () не имеет определенного или предполагаемого значения

Однако эта проблема будет решена, если я буду использовать аннотации. Но я действительно хочу не прибегать к аннотациям каждый раз, когда вводю параметры.

В чем здесь проблема?

Спасибо

0

Решение

PHP-DI внедряет, используя подсказки типа, а не имена параметров. Так будет работать, если $root имел подсказку типа (например, Foo\Bar $root), но, как сейчас, это не может работать.

Вы должны определить параметр вручную:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]