Это может показаться рудиментарным, но я не могу напрямую вводить какие-либо параметры в конструктор моего класса без использования аннотаций. Ниже дано определение и класс называется
$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 () не имеет определенного или предполагаемого значения
Однако эта проблема будет решена, если я буду использовать аннотации. Но я действительно хочу не прибегать к аннотациям каждый раз, когда вводю параметры.
В чем здесь проблема?
Спасибо
PHP-DI внедряет, используя подсказки типа, а не имена параметров. Так будет работать, если $root
имел подсказку типа (например, Foo\Bar $root
), но, как сейчас, это не может работать.
Вы должны определить параметр вручную:
$container->set(
'Namespace\To\Product',
DI\object()->constructor(DI\get('root')
);
Других решений пока нет …