Подскажите, можно ли через конструктор внедрить зависимость одновременно внутри класса и снаружи? типа вот так PHP: use voc; class test01 { protected $pro; protected $voc; public function __construct($pro, voc $voc) { $this->pro=$pro; $this->voc=$voc; } } /// $class=new test01(new \pro);
Что значит "внутри и снаружи"? У тебя, кстати, ошибка: второй параметр обязателен, но не указан при вызове.
я про это и спрашиваю, он требует второй параметр, но я не хочу его туда передавать, так как он определен в этом же файле - use voc; и если делать так PHP: use voc; class test01 { protected $pro; protected $voc; public function __construct(voc $voc) { $this->pro=$pro; } } /// $class=new test01(); то он прекрасно сам втыкается туда вопрос заключается в том, как воткнуть туда "pro" $class=new test01(new \pro); а "voc" сам бы воткнулся (что бы не загромаждать "new test01(new \pro);" не нужными аргументами (зависимостями), которые не изменны)
Тот случай когда от объяснений понятно ещё меньше Во втором примере новая ошибка, неинициированная переменная. Я не понимаю этих "само втыкается". Если тебе нужна инъекция зависимости, будь добр описать её при вызове - в фактических параметрах. --- Добавлено --- use Voc не имеет ничего общего с параметрами. Use нужен для правильного разименования имён классов. Сама по себе эта конструкция не выполняет ничего, это просто подсказка.
Сдаётся мне, что ты получил неправильное представление о параметрах по умолчанию. И виноват в этом, скорее всего, какой-нибудь сервис-контейнер из Laravel или другого фреймворка. Нет в самом языке такой магии чтобы автоматически инжектить объекты. Но сервис-контейнер может создавать параметры неявно, читая информацию об аргументах через рефлексию.
да, все перепутал, конечно так не работает, запарился, на самом деле вот что было, а значит и вопрос отпал PHP: use voc class test01 { protected $pro; protected $voc; public function __construct($pro) { $this->pro=$pro; $this->voc= new voc; } } /// $class=new test01(new \pro);