Skip to content

Service container

The service containerĀ is a special object that facilitates dependency resolution. It is based on the dependency injection design pattern.

Dependency injection proposes to inject all needed objects and configuration into your business logic objects (known as services). It avoids the massive use of singletons, global variables or complicated factories and makes your code much more readable and testable.

The main issue with this pattern is how to resolve the dependencies for your services. This is where the service container comes into play. The role of a service container is to build and maintain your services and their dependencies. Each time you need a service, you may ask the service container for it. It will either build the service with the configuration you provided, or give you an existing instance if it is already available.

Ibexa DXP uses theĀ Symfony service container.


To learn more about the service container, see the documentation for the Symfony DependencyInjection component documentation.

Service tags

Service tags used by the Symfony service container are a way to dedicate services to a specific purpose. They are usually used for extension points.

For instance, if you want to register a Twig extension to add custom filters, you create the PHP class and declare it as a service in the service container configuration with the twig.extension tag (see the Symfony cookbook entry for a full example).

Ibexa DXP exposes several features this way (see the list of core service tags). This is for example the case with Field Types.


For a list of all service tags exposed by Symfony, see its reference documentation.

Core and API

Tag name Usage
router Adds a specific router to the chain router
twig.loader Registers a template loader for Twig
ezpublish.content_view_provider Registers a ContentViewProvider for template selection depending on content/Location being viewed
ezpublish.storageEngine Registers a storage engine in the Repository factory
ezplatform.field_type Registers a Field Type


Tag name Usage
ezplatform.field_type.legacy_storage.converter Registers a converter for a Field Type in Legacy storage engine
ezplatform.field_type.external_storage_handler Registers an external storage handler for a Field Type
ezplatform.field_type.external_storage_handler.gateway Registers an external storage gateway for a Field Type in Legacy storage engine