Returns class the class definition from a given class name
public getClassDefinition ( string $className ) : |
||
$className | string | |
return | returns false if no class definition is found |
/** * 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); } } }
/** * Returns the class definition related to the extended class * * @return ClassDefinition */ public function getExtendsClassDefinition() { if (!$this->extendsClassDefinition && $this->extendsClass) { if ($this->compiler) { $this->setExtendsClassDefinition($this->compiler->getClassDefinition($this->extendsClass)); } } return $this->extendsClassDefinition; }