Sets a service.
@api
string $id The service identifier:
object $service The service instance:
string $scope The scope:
BadMethodCallException When this ContainerBuilder is frozen
Overrides Container::set
public function set($id, $service, $scope = self::SCOPE_CONTAINER) {
$id = strtolower($id);
if ($this
->isFrozen()) {
// setting a synthetic service on a frozen container is alright
if (!isset($this->definitions[$id]) && !isset($this->obsoleteDefinitions[$id]) || isset($this->definitions[$id]) && !$this->definitions[$id]
->isSynthetic() || isset($this->obsoleteDefinitions[$id]) && !$this->obsoleteDefinitions[$id]
->isSynthetic()) {
throw new BadMethodCallException(sprintf('Setting service "%s" on a frozen container is not allowed.', $id));
}
}
if (isset($this->definitions[$id])) {
$this->obsoleteDefinitions[$id] = $this->definitions[$id];
}
unset($this->definitions[$id], $this->aliasDefinitions[$id]);
parent::set($id, $service, $scope);
if (isset($this->obsoleteDefinitions[$id]) && $this->obsoleteDefinitions[$id]
->isSynchronized()) {
$this
->synchronize($id);
}
}