Junior: питання на співбесіді з теми «Сервіс-провайдери»
Питання з реальних співбесід з відповідями: Laravel і PHP, бази даних, JavaScript і фронтенд, Git, Docker, API, безпека й архітектура. Тими самими темами, що й тести.
1 питання
У файлі bootstrap/providers.php - він повертає масив класів провайдерів застосунку.
<?php
return [
App\Providers\AppServiceProvider::class,
App\Providers\BillingServiceProvider::class,
];
Новий провайдер:
php artisan make:provider BillingServiceProvider
Команда створить клас і сама допише його в bootstrap/providers.php. Створений вручну клас треба додати туди самостійно, інакше Laravel про нього не знає.
Що змінилося: до Laravel 11 провайдери перелічували в масиві providers у config/app.php, а в застосунку їх було п'ять-шість стандартних. Тепер у свіжому проєкті один AppServiceProvider, а реєстрація винесена в окремий короткий файл.
Провайдери пакетів зазвичай не реєструють узагалі: Composer-пакет оголошує свій провайдер у composer.json, і Laravel підхоплює його сам (package discovery).
У самому провайдері - два методи: register() для прив'язок у контейнер і boot() для всього, що спирається на інші сервіси: макроси, події, політики, Model::preventLazyLoading().