Ding\Container\Impl\ContainerImpl::_createBean PHP Method

_createBean() private method

This will create a new bean, injecting all properties and applying all aspects.
private _createBean ( Ding\Bean\BeanDefinition $definition ) : object
$definition Ding\Bean\BeanDefinition
return object
    private function _createBean(BeanDefinition $definition)
    {
        $name = $definition->getName();
        if (isset($this->_definitionsInProcess[$name])) {
            throw new BeanFactoryException("Cyclic dependency found for: {$name}");
        }
        $this->_definitionsInProcess[$name] = '';
        $this->_lifecycleManager->beforeCreate($definition);
        $this->_createBeanDependencies($definition);
        $this->_applyAspects($definition);
        $bean = $this->_instantiate($definition);
        if (!is_object($bean)) {
            unset($this->_definitionsInProcess[$name]);
            throw new BeanFactoryException('Could not instantiate ' . $definition->getName());
        }
        $this->_assemble($bean, $definition);
        $this->_setupInitAndShutdown($bean, $definition);
        $this->_lifecycleManager->afterCreate($bean, $definition);
        unset($this->_definitionsInProcess[$name]);
        return $bean;
    }