Внедрение зависимости зависит от того, как вы вызываете функцию / метод, а не от самой функции.
[...] вы можете «напечатать подсказку» зависимости в конструктор класса, который разрешается контейнером
"Разрешено контейнером" означает, что вы (или в этом случае Laravel маршрутизатор) вызываете его через контейнер.
Чтобы автоматически разрешить зависимости в конструкторе, вы можете использовать app()->make()
:
$myThing = app()->make(MyClass::class);
Это даст вам экземпляр MyClass
с разрешены зависимости конструктора.
Чтобы использовать DI для метода, вы можете использовать app()->call()
:
$result = app()->call([$myThing, 'someMethod']);
В общем, Laravel использует DI почти везде. Я всегда предполагаю, что это работает, и если это не так, вы можете просто разрешить зависимость вручную.
Примечание: основано на Laravel 5.4.26, но большинство, если не все , информация все еще должна быть правильной.