Compare the service container, dependency injection, and facade patterns in Laravel
LaravelSome of Laravel's power comes from shortcuts to perform complex code operations. Key to using these tricks is understanding the service container, dependency injection, and facades, because these three make it super easy to do more complex object oriented work.
For example, do you really have to instantiate and object, and then call it's method?
$api = new Amazing::class;
$api->goBig();
See here? Two lines of code when you maybe only want to use or remember one.
Another good example is something like this:
$api = new Secure();
$api->username = "Joe";
$api->password = "Secret";
$api->callMethod();
Now we have four lines of code just to call a method or a fixed entity.
Perhaps you might say reduce it like so:
$api = new Secure($username, $password);
Sure, that works, but what about URL? Where do we store that, the first parameter? Somewhere else?
Of course, the other classic example is what if instantiating $api means we also first needed to instantiate another class? A dependency?
Does that mean we have to do this?
$newClass = new firstInstantiateMe();
$api->useClass($newClass);
Dependency injection means you don't have to worry about a class and it's dependencies.
I could not summarise it any better than below. The only thing left to learn then is how to create service providers, because service providers bundles this all up together.
