/** * @param DefinitionProviderInterface $provider */ public function addDefinitionProvider(DefinitionProviderInterface $provider) { if ($provider instanceof ContainerAwareInterface) { $provider->setContainer($this); } foreach ($provider->getDefinitions() as $identifier => $definition) { if ($definition instanceof ExtendDefinitionInterface) { $this->extensions[$definition->getExtended()][] = $definition; } else { $this->interopDefinitions[$identifier] = $definition; } } }
/** * Register a definition provider. */ private function addProvider(DefinitionProviderInterface $definitionProvider) { foreach ($definitionProvider->getDefinitions() as $definition) { $this->definitions[$definition->getIdentifier()] = $definition; } }
/** * @param DefinitionProviderInterface $definition */ public function define(DefinitionProviderInterface $definition) { foreach ($definition->getDefinitions() as $abstract => $concrete) { $this->registerDefinition($abstract, $concrete); } }