Symfony\Component\DependencyInjection\ContainerBuilder::setDefinition PHP Method

setDefinition() public method

Sets a service definition.
public setDefinition ( string $id, Definition $definition ) : Definition
$id string The service identifier
$definition Definition A Definition instance
return Definition the service definition
    public function setDefinition($id, Definition $definition)
    {
        if ($this->isFrozen()) {
            throw new BadMethodCallException('Adding definition to a frozen container is not allowed');
        }

        $id = strtolower($id);

        unset($this->aliasDefinitions[$id]);

        return $this->definitions[$id] = $definition;
    }

Usage Example

 public function load(array $configs, ContainerBuilder $container)
 {
     $xml = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $xml->load('services.xml');
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     foreach ($configs as $subConfig) {
         $config = array_merge($config, $subConfig);
     }
     $definition = $container->getDefinition('goetas_webservices.xsd2php.naming_convention.' . $config['naming_strategy']);
     $container->setDefinition('goetas_webservices.xsd2php.naming_convention', $definition);
     $schemaReader = $container->getDefinition('goetas_webservices.xsd2php.schema_reader');
     foreach ($config['known_locations'] as $namespace => $location) {
         $schemaReader->addMethodCall('addKnownSchemaLocation', [$namespace, $location]);
     }
     foreach (['php', 'jms'] as $type) {
         $definition = $container->getDefinition('goetas_webservices.xsd2php.path_generator.' . $type . '.' . $config['path_generator']);
         $container->setDefinition('goetas_webservices.xsd2php.path_generator.' . $type, $definition);
         $pathGenerator = $container->getDefinition('goetas_webservices.xsd2php.path_generator.' . $type);
         $pathGenerator->addMethodCall('setTargets', [$config['destinations_' . $type]]);
         $converter = $container->getDefinition('goetas_webservices.xsd2php.converter.' . $type);
         foreach ($config['namespaces'] as $xml => $php) {
             $converter->addMethodCall('addNamespace', [$xml, self::sanitizePhp($php)]);
         }
         foreach ($config['aliases'] as $xml => $data) {
             foreach ($data as $type => $php) {
                 $converter->addMethodCall('addAliasMapType', [$xml, $type, self::sanitizePhp($php)]);
             }
         }
     }
     $container->setParameter('goetas_webservices.xsd2php.config', $config);
 }
All Usage Examples Of Symfony\Component\DependencyInjection\ContainerBuilder::setDefinition