Вопрос довольно прост - возможно ли расширить функциональность Laravel 5 любым умным способом или вам нужно иногда копировать много кода/классов, чтобы достичь того, чего вы хотите.
Поскольку он довольно широк, я приведу вам два примера.
1) Я хотел бы изменить URL-адреса для edit
и create
для \Illuminate\Routing\ResourceRegistrar
. На данный момент единственным способом, который я нашел для этого, является: расширение основного Illuminate Application
для передачи собственного RoutingServiceProvider
, затем расширение Router
, затем расширение Illuminate\Routing\ResourceRegistrar
и, наконец, в bootstrap/app.php
использовать наш расширенный класс Application. Довольно много изменений только для изменения 2 строк. На самом деле многие методы дублируются только для того, чтобы передать наш пользовательский класс, какой код точно такой же, за исключением того, что он использует класс из другого пространства имен
2) Другие подобные изменения - задайте настраиваемые пути для кэшированного config - вам нужно снова расширить Application
, чтобы переопределить метод getCachedConfigPath
, а затем внести изменения в bootstrap/app.php
Итак, вопрос в том, что нужно сделать некоторые модификации или, возможно, одно и то же (например, те, что указаны выше), как-то проще не расширять класс Application
и сделать так много изменений?