Download the PHP package aeris/zf-di-config without Composer
On this page you can find all versions of the php package aeris/zf-di-config. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download aeris/zf-di-config
More information about aeris/zf-di-config
Files in aeris/zf-di-config
Package zf-di-config
Short Description Configurable dependency injection for the ZF2 ServiceManager
License
Homepage http://www.aerisweather.com/
Informations about the package zf-di-config
ZfDiConfig
Configurable dependency injection for the ZF2 ServiceManager.
Installation
You can install ZfDiConfig using composer:
Then add the module to your application config:
Basic Usage
ZfDiConfig allows you to configure services, instead of using service factories. For example:
In this example, we:
- Created a service called "SomeService" which is an instance of
\MyApp\SomeService
- Created a service called "FooService" which is an instance of
\MyApp\FooService
- Injected
SomeService
intoFooService
as a constructor argument - Set the configured value of
bar
, usingFooService::setBar()
Compare this to a typical ZF2 approach for creating services:
This approach works, but it can become very verbose, and it makes it difficult to see at a glance how your services are wired together.
ZfDiConfig takes a different approach, by allowing you to configure how your services are wired together:
Plugins
ZfDiConfig uses plugins to resolve configured references. A few plugins are provided to cover basic usage, though you can easily add your own plugins, too.
Most plugins allow either a short or long form of configuration. For example, the ServiceResolverPlugin can be referenced as $service
or using the @
prefix:
Default Plugin
By default, ZfDiConfig uses the $factory
plugin for configuring services, so that:
...is the same as...
If you do not want to define your service using the $factory
plugin, there are a couple of options. For one, you can just use a different plugin, and DiConfig
will be smart enough to figure it out.
You can also override the global default plugin, in the zf_di_config
module config:
FactoryPlugin
This is the default plugin used when configuring a service. It allows you to create configured objects instances. You have already seen how this plugin is used in the basic usage examples.
One cool thing is that you can actually use this plugin 'inline' from within other plugin configuration. Let me demonstrate:
Configuration Reference
The FactoryPlugin
can accept the following configurations:
Short Form:
Really Short Form:
Long Form:
ServiceResolverPlugin
The service resolver plugin resolves references to existing services.
Configuration Reference
Short Form:
Long Form:
ConfigParamPlugin
The ConfigParamPlugin
allows you to access raw values from you application config.
Configuration Reference
Short Form
Long Form
ServiceManagerPlugin
The ServiceManagerPlugin allows you to create a service manager plugin on the fly. The created service manager may be configured with ZfDiConfig, just like your top level service manager.
Configuration reference
Extending ZfDiConfig
You can extend ZfDiConfig using custom plugins. Plugins must implement \Aeris\ZfDiConfig\ServiceManager\ConfigPlugin\ConfigPluginInterface
, and be registered in your module config.
Example
Let's say you want to create a plugin to resolve Doctrine EntityRepository
objects. We want to be able to use it like so:
First we implement the plugin logic:
Now we just need to register the plugin
And you're ready to go!