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

1.1.0 2015-04-16 12:54 UTC

This package is not auto-updated.

Last update: 2024-12-21 17:48:37 UTC


README

Build Status

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"));
}