php artisan bundle:install linject
Bundle configuration:
'linject' => array(
'autoloads' => array(
'map' => array(
'Linject\\Container' => '(:bundle)/container.php',
),
),
),
Linject is a powerful, reflection based IoC container that quickly resolves abstract types (Interfaces) to concrete implementations. It is useful for building flexile, testable, and complex applications. Linject can also resolve any concrete type without any configuration.
For an overview of Inversion of Control (IoC) and dependency injection, check out Martin Fowler's article on the topic.
Binding an interface to an implementation:
Linject\Container::bind('IRepository', 'Repository');
Sometimes you may want the container to create one instance of the object, but return the same instance on each subsequent request for that type.
Registering a binding to be managed as a singleton:
Linject\Container::singleton('IRepository', 'Repository');
Resolving an implementation of an interface:
$repository = Linject\Container::resolve('IRepository');
Note: The container throws an instance of Linject\Exception on unresolvable types.
You can install this bundle by running the following CLI command:
php artisan bundle:install linject
Alternatively you can download it directly from GitHub:
http://github.com/taylorotwell/linject