Через package discovery: пакет оголошує провайдер і фасади в секції extra.laravel свого composer.json.
"extra": {
"laravel": {
"providers": [
"Acme\\Billing\\BillingServiceProvider"
],
"aliases": {
"Billing": "Acme\\Billing\\Facades\\Billing"
}
}
}
Після composer install чи update Laravel виконує package:discover, збирає ці оголошення з усіх пакетів і кешує список. Провайдер реєструється автоматично - у bootstrap/providers.php нічого дописувати не треба.
Як застосунку відмовитися від автопідключення - наприклад, щоб зареєструвати провайдер умовно лише локально:
"extra": {
"laravel": {
"dont-discover": ["barryvdh/laravel-debugbar"]
}
}
"*" у dont-discover вимикає виявлення для всіх пакетів.
Що варто знати авторові пакета:
- провайдер пакета має бути легким і бажано відкладеним, якщо лише реєструє прив'язки - він завантажується в кожному застосунку, що встановив пакет;
- конфігурацію, міграції й шаблони пакет пропонує опублікувати (
publishes()), а не копіює сам; mergeConfigFrom()уregister()дає значення за замовчуванням, які застосунок може перекрити своїм файлом.
Якщо після встановлення пакета щось «не підхопилося», перевіряють кеш: php artisan package:discover і optimize:clear.