http://laravel.com/docs/5.1/facades
Фасады перечислены на связанной странице внизу. Мой вопрос … Как мне переопределить эти привязки сервисных контейнеров?
Пример Request
фасадные крепления Illuminate\Http\Request
с ключом request
, Я хочу создать свой собственный класс, который наследует от Illuminate\Http\Request
и связать это с request
ключ, вместо текущего класса. И я не могу найти, какой поставщик услуг связывает это.
Итак, я вроде сделал это. Сначала я заметил, что эти привязки были жестко закодированы в Illuminate\Foundation\Application::registerCoreContainerAliases()
поэтому я расширил этот класс и переопределил этот метод, чтобы изменить его. Я также должен был назвать этот класс сейчас bootstrap\app.php
, но делать все это не помогло, я все еще получал экземпляр Illuminate\Http\Request
,
Итак, я обнаружил, что Illuminate\Http\Request
был напрямую указан в public\index.php
поэтому я попытался изменить его там My\Very\Own\Http\Request
и это сработало, наконец, моя реализация была использована.
Наконец, я удалил свою версию Application::registedCoreContainerAliases()
и вернулся bootstrap\app.php
потому что все также работает без этого изменения.
Я думаю, что следующий ответ будет очень полезным для вас
https://stackoverflow.com/a/39648307/3912276
Я процитировал самую важную часть ответа. Это объясняет, как вы можете заменить / расширить Mailer
фасад
Напишите свою собственную реализацию
Mailer
, расширяяIlluminate\Mail\Mailer
, в котором вы можете переопределить метод отправки, реализовать ваши проверки и вызватьparent::send()
,
Написать свой собственный поставщик услуг (РасширениеIlluminate\Mail\MailServiceProvider
), в частности, повторно реализовать метод регистра. Он должен создать экземпляр вашего собственного Mailer вместо собственного Laravel. (Вы можете скопировать большую часть кода из метода регистров Laravel).
Теперь в вашемconfig/app.php
файл, в массиве провайдеров, заменитьIlluminate\Mail\MailServiceProvider::class
, с вашим собственным поставщиком.