コード例 #1
0
ファイル: AspectManager.php プロジェクト: im286er/Ding
 /**
  * Returns a PointcutDefinition or false if none found.
  *
  * @param string $pointcut Pointcut id or name.
  *
  * @return PointcutDefinition
  */
 public function getPointcut($pointcut)
 {
     if (isset($this->_pointcuts[$pointcut])) {
         return $this->_pointcuts[$pointcut];
     } else {
         $result = false;
         $value = $this->_cache->fetch('AspectManagerPointcut' . $pointcut, $result);
         if ($result === true) {
             $this->_pointcuts[$pointcut] = $value;
             return $value;
         } else {
             foreach ($this->_pointcutProviders as $provider) {
                 $value = $provider->getPointcut($pointcut);
                 if ($value !== false) {
                     $this->setPointcut($value);
                     return $value;
                 }
             }
         }
     }
     return false;
 }
コード例 #2
0
ファイル: ContainerImpl.php プロジェクト: marcelog/ding
 /**
  * Returns a bean.
  *
  * @param string $name Bean name.
  *
  * @throws BeanFactoryException
  * @return object
  */
 public function getBean($name)
 {
     $ret = false;
     $beanDefinition = $this->getBeanDefinition($name);
     $beanName = $name . '.bean';
     if ($beanDefinition->isAbstract()) {
         throw new BeanFactoryException("Cant instantiate abstract bean: {$name}");
     }
     if ($beanDefinition->isPrototype()) {
         $ret = $this->_createBean($beanDefinition);
     } else {
         if ($beanDefinition->isSingleton()) {
             if (isset($this->_beans[$beanName])) {
                 $ret = $this->_beans[$beanName];
             } else {
                 $ret = $this->_beanCache->fetch($beanName, $result);
                 if (!$ret) {
                     $ret = $this->_createBean($beanDefinition);
                 }
                 $this->_beans[$beanName] = $ret;
             }
         }
     }
     return $ret;
 }