Integrates the Symfony´s Dependency Injection Container with drupal.
This project can be checked out with composer.
{
"require": {
"janschumann/dic": "*"
}
}
Usually no configuration is necessary.
The default dic cache dir will be determined by DRUPAL_ROOT . '/' . variable_get('file_public_path', '') . '/dic'
.
This can be customized by setting the dic_root_dir
variable.
Via shell script:
$ drush vset dic_root_dir <path/to/cache/dir>
Via php:
variable_set('dic_root_dir', '<path/to/cache/dir>');
Class autoloading is done via composer using the composer_classloader module.
By default a settings.xml
or an environment specific derivate (settings_<environment>.xml
) is loaded.
This module provides the symfony event dispacher as a service available through the container.
An instance of the event dispacher can be retrieved by
$dispatcher = drupal_dic()->get('event_dispatcher');
To add a listener to an event, add te following to your settings.xml
file.
<service id="my_service" class="%my_service.class%">
<tag name="drupal.event_listener" event="<my_event_name>" method="<method_on_my_service>" />
</service>
An event is dispached by:
drupal_dic()->get('event_dispatcher')->dispatch('<my_event_name>', <the event class>);
Your modules may implement hook_dic_bundle_info()
as described in dic.api.php
to register their bundles.
Example:
/**
* Implements @see hook_dic_bundle_info()
*/
function <my_module>_dic_bundle_info() {
return array('bundles' => array("\\MyNamespace\\MyBundle\\Bundle\\MyBundle\\MyBundle"));
}