public function getBeanDefinition($name)
{
if (isset($this->_beanAliases[$name])) {
$name = $this->_beanAliases[$name];
}
if (isset($this->_beanDefs[$name])) {
return $this->_beanDefs[$name];
}
$beanDefinition = null;
if ($this->_beanDefCache !== null) {
$beanDefinition = $this->_beanDefCache->fetch($name, $result);
}
if ($beanDefinition) {
$this->_beanDefs[$name] = $beanDefinition;
return $beanDefinition;
}
foreach ($this->_beanDefinitionProviders as $provider) {
$beanDefinition = $provider->getBeanDefinition($name);
if ($beanDefinition) {
$beanDefinition->setClass($this->_searchAndReplaceProperties($beanDefinition->getClass()));
break;
}
}
if (!$beanDefinition) {
throw new BeanFactoryException('Unknown bean: ' . $name);
}
$beanDefinition = $this->_lifecycleManager->afterDefinition($beanDefinition);
$this->_beanDefs[$name] = $beanDefinition;
$this->_beanDefCache->store($name, $beanDefinition);
foreach ($beanDefinition->getAliases() as $alias) {
$this->_beanAliases[$alias] = $name;
}
return $beanDefinition;
}