Пожалуйста, отметьте https://laravel.com/docs/5.7/providers.
Вкратце, если вы хотите настроить класс, который вы будете использовать во время выполнения, вы можете изменить его в провайдере (сделать его одиночным или передать несколько аргументов) и войти во время выполнения через $app
(если у вас нет возможности использовать DI
).но когда вы создаете объект vie new
, он только создает экземпляр.
Представьте, что у нас есть класс A
, который получает 2 параметра конфигурации в процессе строительства.Так что нужно везде звонить new A($param1,$param2)
.но используя провайдеров, вы можете использовать DI
для получения экземпляра класса A с уже переданными параметрами или $app
, если у вас нет возможности использовать DI