Example #1
0
 /**
  * Check dependencies
  *
  * @param Compiler $compiler
  */
 public function checkDependencies(Compiler $compiler)
 {
     $classDefinition = $this->_classDefinition;
     $extendedClass = $classDefinition->getExtendsClass();
     if ($extendedClass) {
         if ($classDefinition->getType() == 'class') {
             if ($compiler->isClass($extendedClass)) {
                 $extendedDefinition = $compiler->getClassDefinition($extendedClass);
                 $classDefinition->setExtendsClassDefinition($extendedDefinition);
             } else {
                 if ($compiler->isBundledClass($extendedClass)) {
                     $extendedDefinition = $compiler->getInternalClassDefinition($extendedClass);
                     $classDefinition->setExtendsClassDefinition($extendedDefinition);
                 } else {
                     $extendedDefinition = new ClassDefinitionRuntime($extendedClass);
                     $classDefinition->setExtendsClassDefinition($extendedDefinition);
                     $this->_logger->warning('Cannot locate class "' . $extendedClass . '" when extending class "' . $classDefinition->getCompleteName() . '"', 'nonexistent-class', $this->_originalNode);
                 }
             }
         } else {
             if ($compiler->isInterface($extendedClass)) {
                 $extendedDefinition = $compiler->getClassDefinition($extendedClass);
                 $classDefinition->setExtendsClassDefinition($extendedDefinition);
             } else {
                 if ($compiler->isBundledInterface($extendedClass)) {
                     $extendedDefinition = $compiler->getInternalClassDefinition($extendedClass);
                     $classDefinition->setExtendsClassDefinition($extendedDefinition);
                 } else {
                     $extendedDefinition = new ClassDefinitionRuntime($extendedClass);
                     $classDefinition->setExtendsClassDefinition($extendedDefinition);
                     $this->_logger->warning('Cannot locate class "' . $extendedClass . '" when extending interface "' . $classDefinition->getCompleteName() . '"', 'nonexistent-class', $this->_originalNode);
                 }
             }
         }
     }
     $implementedInterfaces = $classDefinition->getImplementedInterfaces();
     if ($implementedInterfaces) {
         $interfaceDefinitions = array();
         foreach ($implementedInterfaces as $interface) {
             if ($compiler->isInterface($interface)) {
                 $interfaceDefinitions[$interface] = $compiler->getClassDefinition($interface);
             } else {
                 if ($compiler->isBundledInterface($interface)) {
                     $interfaceDefinitions[$interface] = $compiler->getInternalClassDefinition($interface);
                 } else {
                     $extendedDefinition = new ClassDefinitionRuntime($extendedClass);
                     $classDefinition->setExtendsClassDefinition($extendedDefinition);
                     $this->_logger->warning('Cannot locate class "' . $interface . '" when extending interface "' . $classDefinition->getCompleteName() . '"', 'nonexistent-class', $this->_originalNode);
                 }
             }
         }
         if ($interfaceDefinitions) {
             $classDefinition->setImplementedInterfaceDefinitions($interfaceDefinitions);
         }
     }
 }