janschumann / dic
Integrates Symfony´s dependency injection container with drupal.
Installs: 3 035
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 4
Open Issues: 1
Type:drupal-module
Requires
- php: >=5.4
- janschumann/classloader_composer: ~1.0.0
- symfony/config: ~2.4
- symfony/dependency-injection: ~2.4
- symfony/filesystem: ~2.4
- symfony/http-kernel: ~2.4
Requires (Dev)
- phpunit/phpunit: ~4.4
This package is not auto-updated.
Last update: 2024-12-21 17:48:37 UTC
README
Overview
Integrates the Symfony´s Dependency Injection Container with drupal.
Installation
This project can be checked out with composer.
{ "require": { "janschumann/dic": "*" } }
Confguration
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>');
Usage
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.
Provided services
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>);
Register bundles
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")); }