/** * Release bean $beanName * * @param BeanEnvelope $beanStructure the name of the bean * @param string $contextReferenceId the context application id * * @throws OvoCircularDependencyException */ public static function release(BeanEnvelope $beanStructure, $contextReferenceId) { $beanName = $beanStructure->getName(); if (!isset(self::$repository[$contextReferenceId][$beanName]) and $beanStructure->getScope() == ScopeValue::PROTOTYPE) { $schema = join(self::ARROW, self::$repository[$contextReferenceId]); throw new OvoCircularDependencyException('Dependency error [maybe Circular dependency?][' . $schema . self::ARROW . $beanName . ']'); } unset(self::$repository[$contextReferenceId][$beanName]); }
/** * 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; }
public function createBean(BeanEnvelope $beanEnvelope) { $beanName = $beanEnvelope->getName(); $this->logger->debug('Create session bean with name: ' . $beanName); $beanInstance = $this->checkIfSessionBeanExists($beanName); if ($beanInstance == null) { $this->logger->debug('Session instance not exists, try to create'); $beanInstance = $this->createObject($beanEnvelope); $this->beanRepository->addBean($beanName, $beanInstance); } return $beanInstance; }
public function createBean(BeanEnvelope $beanEnvelope) { $beanName = $beanEnvelope->getName(); $this->logger->debug('Create singleton Object for the bean with name: ' . $beanName); $beanInstance = $this->checkIfSingletonBeanExists($beanName); if ($beanInstance == null) { $this->logger->debug('Singleton instance not exists found, try to create'); $beanInstance = $this->createObject($beanEnvelope); $this->singletonBeanRepositoryImpl->addBean($beanName, $beanInstance); } 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; }
public function createBean(BeanEnvelope $beanEnvelope) { $this->logger->debug('Create prototype bean with name: ' . $beanEnvelope->getName()); return $this->createObject($beanEnvelope); }
/** * Check and call init method for bean $beanEnvelope * * @param BeanEnvelope $beanEnvelope * * @return void * * @throw OvoInternalException */ private function callInitMethod(BeanEnvelope $beanEnvelope) { $this->logger->debug('Call Init method'); if ($beanEnvelope->getInitMethod()) { try { Caller::callMethodFromObject($beanEnvelope->getInstance(), $beanEnvelope->getInitMethod()); } catch (OvoContainerException $e) { throw new OvoInternalException($e->getMessage(), $beanEnvelope); } } }