enzyme/laravel-binder
Binder
A contextual binding helper for Laravel 5.
Example
From the service provider.
use Enzyme\LaravelBinder\Binder;
// Inside the app service provider...
public function register()
{
$binder = new Binder($this->app);
$binder->setAlias(
'controller.listing',
'App\Http\Controllers\ListingController'
);
$binder->setAlias(
'repos.interface',
'Acme\Repositories\RepositoryInterface'
);
// Option 1 for binding, using aliases.
$binder->setBinding(
'repos.listing',
'repos.interface',
'Acme\Repositories\ListingRepository'
);
// Option 2 for binding, using FQNs.
$binder->setBinding(
'factories.listing',
'Acme\Factories\FactoryInterface',
'Acme\Factories\ListingFactory'
);
// Tell the service container that the ListingController
// needs the ListingRepository & ListingFactory.
$binder->setNeeds(
'controller.listing',
['repos.listing', 'factories.listing']
);
$binder->register();
}
From the controller
// You don't need to inject the specific concrete classes, just the
// interfaces. The Binder + Service Container has taken care of it for you.
public function __construct(RepositoryInterface $repo, FactoryInterface $factory)
{
$this->repo = $repo;
$this->factory = $factory;
}
What's the purpose?
With your service provider(s) now being the sole authority for which classes get what implementations, if you ever need to switch those implementations, it's dead simple and in one spot!
Related Packages
valorin/random
Random is a simple helper package designed to make it easy to generate a range o...
436,338
234
cline/struct
Lean, attribute-driven Laravel data objects with explicit validation and Eloquen...
19,286
0
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v1.0.0 | >=5.5.0 | ^5.2 | MIT | |
| v0.2.1 | >=5.5.0 | ^5.2 | MIT | |
| v0.2.0 | >=5.5.0 | ^5.2 | MIT | |
| 0.1.0 | >=5.5.0 | ^5.2 | MIT |
