Package Data | |
---|---|
Maintainer Username: | r3oath |
Maintainer Contact: | r3oath@gmail.com (Tristan Strathearn) |
Package Create Date: | 2016-01-19 |
Package Last Update: | 2016-09-22 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-10 15:03:08 |
Package Statistics | |
---|---|
Total Downloads: | 23 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
A contextual binding helper for Laravel 5.
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();
}
// 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;
}
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!