Download the PHP package rawebone/injector without Composer
On this page you can find all versions of the php package rawebone/injector. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download rawebone/injector
More information about rawebone/injector
Files in rawebone/injector
Package injector
Short Description A library providing a low level service injection API
License MIT
Informations about the package injector
Injector
Injector provides a low level service injection system partly influenced by that found in AngularJS. The idea is somewhat similar to dependency injection although it actually injects services - the difference between the two is nuanced but loosely: DI works based on types, overriding on a per class definition whereas services work on names.
For example, in a DI scenario these two log instances will be the same (without some other configuration):
While DI and configuration of this kind is useful in very large applications for smaller more concise applications the cost of implementation is higher as it is normally more complex. As such in these smaller applications, SL can normally wield more of a benefit as you still get lazy loading of instances and the ability to easily change a definition.
However traditional SL systems have a drawback in that they work on a pull system:
As such your application, in addition to some syntax and bloat from the DSL, will also not be as succinct (in my humble opinion).
This library provides a low level mechanism for injecting services into instances to clear some of the bloat, in addition to some low level utilities for working with functions and function signatures.
The Injector Approach
As stated, the "resolve anything callable to a service name" is a broad brush
tactic but it doesn't give us what we normally want. As such implementers can
specify their own behaviour by implementing the Rawebone\Injector\ResolverInterface
which takes in a service name and returns a value to be injected.
The library also provides a more common solution to the problem through
the Rawebone\Injector\RegisterResolver
:
License
MIT, please see the included document for details.