Внедрение зависимостей (Dependency Injection)
Контейнер служб Laravel используется для разрешения всех контроллеров.
В результате вы можете вводить подсказки о любых зависимостях, которые могут понадобиться вашему контроллеру в его конструкторе. Объявленные зависимости будут автоматически разрешены и внедрены в экземпляр контроллера.
Вместо явного объявления свойства и его присваивания в конструкторе, вы можете указать модификатор доступа и тип свойства прямо в конструкторе.
namespace App\Http\Controllers;
use App\Services\SomeService;
class ExampleController extends Controller
{
public function __construct(private SomeService $someService)
{
//
}
public function index()
{
$data = $this->someService->getData();
return view('example', ['data' => $data]);
}
}