The question is quite simple - is it possible to extend Laravel 5 functionality in any smart way or you need to copy sometimes a lot of code/classes just to achieve what you want.
Because it's quite broad, I'll give you 2 examples.
1) I would like to change urls for edit and create for \Illuminate\Routing\ResourceRegistrar. At the moment the only way I found to achieve that is: extending main Illuminate Application to pass own RoutingServiceProvider, then extend Router, then extend Illuminate\Routing\ResourceRegistrar and finally in bootstrap/app.php use our extended Application class. Quite a lot of modifications just to change 2 lines. Many methods are in fact duplicated just to pass our custom class which code is exact the same except it uses class from other namespace
2) Other similar change - set custom paths for cached config - you need to again extend  Application to override method getCachedConfigPath and then make a change in bootstrap/app.php
So the question is - is it the way that some modifications need to be done or maybe the same (for example those 2 above) could be achieved somehow easier not extending core Application class and making so many changes?
You should be able to overwrite the core ResourceRegistrar by binding your own implementation to the service container:
$this->app->bind('\Illuminate\Routing\ResourceRegistrar', function()
{
    return new MyResourceRegistrar();
});
Let MyResourceRegistrar extend the core ResourceRegistrar and you should be able to overwrite the edit and create methods:
class MyResourceRegistrar extends \Illuminate\Routing\ResourceRegistrar
{
    // Overwrite your methods here
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With