public ContainerBuilder::set($id, $service, $scope = self::SCOPE_CONTAINER)
Overrides Symfony\Component\DependencyInjection\ContainerBuilder::set().
Drupal's container builder can be used at runtime after compilation, so we override Symfony's ContainerBuilder's restriction on setting services in a frozen builder.
@todo Restrict this to synthetic services only. Ideally, the upstream ContainerBuilder class should be fixed to allow setting synthetic services in a frozen builder.
Overrides ContainerBuilder::set
File
- core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php, line 77
Class
- ContainerBuilder
- Drupal's dependency injection container builder.
Namespace
Drupal\Core\DependencyInjection
Code
1 2 3 4 5 6 7 8 9 10 11 | public function set( $id , $service , $scope = self::SCOPE_CONTAINER) { if ( strtolower ( $id ) !== $id ) { throw new \InvalidArgumentException( "Service ID names must be lowercase: $id" ); } SymfonyContainer::set( $id , $service , $scope ); // Ensure that the _serviceId property is set on synthetic services as well. if (isset( $this ->services[ $id ]) && is_object ( $this ->services[ $id ]) && !isset( $this ->services[ $id ]->_serviceId)) { $this ->services[ $id ]->_serviceId = $id ; } } |
Please login to continue.