class Container implements IntrospectableContainerInterface, ResettableContainerInterface

Container is a dependency injection container.

It gives access to object instances (services).

Services and parameters are simple key/pair stores.

Parameter and service keys are case insensitive.

A service can also be defined by creating a method named getXXXService(), where XXX is the camelized version of the id:

  • request -> getRequestService()
  • mysql_session_storage -> getMysqlSessionStorageService()
  • symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()

The container can have three possible behaviors when a service does not exist:

  • EXCEPTION_ON_INVALID_REFERENCE: Throws an exception (the default)
  • NULL_ON_INVALID_REFERENCE: Returns null
  • IGNORE_ON_INVALID_REFERENCE: Ignores the wrapping command asking for the reference (for instance, ignore a setter if the service does not exist)

Properties

protected $parameterBag
protected $services
protected $methodMap
protected $aliases
protected $scopes
protected $scopeChildren
protected $scopedServices
protected $scopeStacks
protected $loading

Methods

__construct(ParameterBagInterface $parameterBag = null)

No description

compile()

Compiles the container.

bool
isFrozen()

Returns true if the container parameter bag are frozen.

getParameterBag()

Gets the service container parameter bag.

mixed
getParameter(string $name)

Gets a parameter.

bool
hasParameter(string $name)

Checks if a parameter exists.

setParameter(string $name, mixed $value)

Sets a parameter.

set(string $id, object $service, string $scope = self::SCOPE_CONTAINER)

Sets a service.

bool
has(string $id)

Returns true if the given service is defined.

object
get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)

Gets a service.

bool
initialized(string $id)

Returns true if the given service has actually been initialized.

reset()

Resets shared services from the container.

array
getServiceIds()

Gets all service ids.

enterScope(string $name) deprecated

This is called when you enter a scope.

leaveScope(string $name) deprecated

This is called to leave the current scope, and move back to the parent scope.

addScope(ScopeInterface $scope) deprecated

Adds a scope to the container.

bool
hasScope(string $name) deprecated

Returns whether this container has a certain scope.

bool
isScopeActive(string $name) deprecated

Returns whether this scope is currently active.

static string
camelize(string $id)

Camelizes a string.

static string
underscore(string $id)

A string to underscore.

Details

at line 64
__construct(ParameterBagInterface $parameterBag = null)

Parameters

ParameterBagInterface $parameterBag

at line 77
compile()

Compiles the container.

This method does two things:

  • Parameter values are resolved;
  • The parameter bag is frozen.

at line 89
bool isFrozen()

Returns true if the container parameter bag are frozen.

Return Value

bool true if the container parameter bag are frozen, false otherwise

at line 99
ParameterBagInterface getParameterBag()

Gets the service container parameter bag.

Return Value

ParameterBagInterface A ParameterBagInterface instance

at line 113
mixed getParameter(string $name)

Gets a parameter.

Parameters

string $name The parameter name

Return Value

mixed The parameter value

Exceptions

InvalidArgumentException if the parameter is not defined

at line 125
bool hasParameter(string $name)

Checks if a parameter exists.

Parameters

string $name The parameter name

Return Value

bool The presence of parameter in container

at line 136
setParameter(string $name, mixed $value)

Sets a parameter.

Parameters

string $name The parameter name
mixed $value The parameter value

at line 156
set(string $id, object $service, string $scope = self::SCOPE_CONTAINER)

Sets a service.

Setting a service to null resets the service: has() returns false and get() behaves in the same way as if the service was never created.

Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0.

Parameters

string $id The service identifier
object $service The service instance
string $scope The scope of the service

Exceptions

RuntimeException When trying to set a service in an inactive scope
InvalidArgumentException When trying to set a service in the prototype scope

at line 208
bool has(string $id)

Returns true if the given service is defined.

Parameters

string $id The service identifier

Return Value

bool true if the service is defined, false otherwise

at line 243
object get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)

Gets a service.

If a service is defined both through a set() method and with a get{$id}Service() method, the former has always precedence.

Parameters

string $id The service identifier
int $invalidBehavior The behavior when the service does not exist

Return Value

object The associated service

Exceptions

ServiceCircularReferenceException When a circular reference is detected
ServiceNotFoundException When the service is not defined
Exception if an exception has been thrown when the service has been resolved

See also

Reference

at line 325
bool initialized(string $id)

Returns true if the given service has actually been initialized.

Parameters

string $id

Return Value

bool true if the service has been initialized, false otherwise

at line 345
reset()

Resets shared services from the container.

The container is not intended to be used again after being reset in a normal workflow. This method is meant as a way to release references for ref-counting. A subsequent call to ContainerInterface::get will recreate a new instance of the shared service.

at line 359
array getServiceIds()

Gets all service ids.

Return Value

array An array of all defined service ids

at line 382
enterScope(string $name) deprecated

deprecated since version 2.8, to be removed in 3.0.

This is called when you enter a scope.

Parameters

string $name

Exceptions

RuntimeException When the parent scope is inactive
InvalidArgumentException When the scope does not exist

at line 434
leaveScope(string $name) deprecated

deprecated since version 2.8, to be removed in 3.0.

This is called to leave the current scope, and move back to the parent scope.

Parameters

string $name

Exceptions

InvalidArgumentException if the scope is not active

at line 483
addScope(ScopeInterface $scope) deprecated

deprecated since version 2.8, to be removed in 3.0.

Adds a scope to the container.

Parameters

ScopeInterface $scope

Exceptions

InvalidArgumentException

at line 520
bool hasScope(string $name) deprecated

deprecated since version 2.8, to be removed in 3.0.

Returns whether this container has a certain scope.

Parameters

string $name

Return Value

bool

at line 540
bool isScopeActive(string $name) deprecated

deprecated since version 2.8, to be removed in 3.0.

Returns whether this scope is currently active.

This does not actually check if the passed scope actually exists.

Parameters

string $name

Return Value

bool

at line 554
static string camelize(string $id)

Camelizes a string.

Parameters

string $id A string to camelize

Return Value

string The camelized string

at line 566
static string underscore(string $id)

A string to underscore.

Parameters

string $id The string to underscore

Return Value

string The underscored string