/**
  * Create (or get for Session / Singleton beanRepository) the instance of the bean
  *
  * @param BeanEnvelope $beanStructure
  *
  * @return Object
  *
  * @throws OvoContainerException
  */
 public function initializeBean(BeanEnvelope $beanStructure)
 {
     $this->logger->debug('Create Object from Core: ' . $beanStructure->getClass());
     $beanInstance = $this->getScopeObjectCreator($beanStructure->getScope())->createBean($beanStructure);
     if (!is_object($beanInstance)) {
         $this->logger->error('Error in the creation of the bean with name ' . $beanStructure->getName());
         throw new OvoContainerException('Error in bean creation ' . $beanStructure->getName());
     }
     return $beanInstance;
 }
 /**
  * Resolve dependency for bean $beanStructure
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return void
  */
 public static function resolve(BeanEnvelope $beanEnvelope)
 {
     self::$logger = OvoLogger::getLogger(get_class());
     self::$logger->debug('Get dependencies form bean ' . $beanEnvelope->getClass());
     $beanInstance = $beanEnvelope->getInstance();
     $dependencies = $beanEnvelope->getProperties();
     if ($dependencies) {
         foreach ($dependencies as $dependency) {
             self::injectPropertyDependency($dependency, $beanInstance, $beanEnvelope->getContextReferenceId());
         }
     }
 }
 /**
  * Create the object from the $beanStructure
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return Object
  */
 protected function createObject(BeanEnvelope $beanEnvelope)
 {
     $beanClass = $beanEnvelope->getClass();
     $beanArgs = $beanEnvelope->getArgs();
     $beanFactoryMethod = $beanEnvelope->getFactoryMethod();
     $this->logger->debug('Create bean name: ' . $beanEnvelope->getName() . ' on class: ' . $beanClass);
     if ($beanFactoryMethod != null) {
         $beanInstance = ObjectCreator::createObjectFromFactoryMethod($beanClass, $beanArgs, $beanFactoryMethod);
     } else {
         $beanInstance = ObjectCreator::createObject($beanClass, $beanArgs);
     }
     return $beanInstance;
 }
Exemple #4
0
 /**
  * Create (or get for Session / Singleton bean) the bean instance
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return Object
  */
 private function getBeanFromFactory(BeanEnvelope $beanEnvelope)
 {
     $this->logger->debug('Create or get bean' . $beanEnvelope->getClass() . ' from the Factory');
     try {
         $instance = $this->factoryObjectCreator->initializeBean($beanEnvelope);
         if ($beanEnvelope->getScope() == ScopeValue::SESSION) {
             $this->handleSessionBean($beanEnvelope);
         }
         return $instance;
     } catch (OvoContainerException $e) {
         throw new OvoInternalException($e->getMessage(), $beanEnvelope);
     }
 }