Laravel

Внедрение зависимостей (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]);
    }
}