/** * fromReflection() - build a Code Generation PHP Object from a Class Reflection * * @param Zend_Reflection_Class $reflectionClass * @return dmZendCodeGeneratorPhpClass */ public static function fromReflection(Zend_Reflection_Class $reflectionClass) { $class = new self(); $class->setSourceContent($class->getSourceContent()); $class->setSourceDirty(false); if ($reflectionClass->getDocComment() != '') { $class->setDocblock(Zend_CodeGenerator_Php_Docblock::fromReflection($reflectionClass->getDocblock())); } $class->setAbstract($reflectionClass->isAbstract()); $class->setName($reflectionClass->getName()); if ($parentClass = $reflectionClass->getParentClass()) { $class->setExtendedClass($parentClass->getName()); $interfaces = array_diff($parentClass->getInterfaces(), $reflectionClass->getInterfaces()); } else { $interfaces = $reflectionClass->getInterfaces(); } $class->setImplementedInterfaces($interfaces); $properties = array(); foreach ($reflectionClass->getProperties() as $reflectionProperty) { if ($reflectionProperty->getDeclaringClass()->getName() == $class->getName()) { $properties[] = Zend_CodeGenerator_Php_Property::fromReflection($reflectionProperty); } } $class->setProperties($properties); $methods = array(); foreach ($reflectionClass->getMethods(-1, 'dmZendReflectionMethod') as $reflectionMethod) { if ($reflectionMethod->getDeclaringClass()->getName() == $class->getName()) { $methods[] = dmZendCodeGeneratorPhpMethod::fromReflection($reflectionMethod); } } $class->setMethods($methods); return $class; }
public function testDocblockLongDescription() { $classReflection = new Zend_Reflection_Class('Zend_Reflection_TestSampleClass5'); $expectedOutput = <<<EOS This is a long description for the docblock of this class, it should be longer than 3 lines. It indeed is longer than 3 lines now. EOS; $this->assertEquals($classReflection->getDocblock()->getLongDescription(), $expectedOutput); }
/** * Returns the URL for the given class' API page * * @param mixed $class * @access protected * @return string */ protected function _getClassUrl($class) { $reflection = new Zend_Reflection_Class($class); $docblock = $reflection->getDocblock(); $url = $this->_zendApiUrl; if ($docblock->hasTag('package')) { $url .= $docblock->getTag('package')->getDescription(); } if ($docblock->hasTag('subpackage')) { $url .= '/' . $docblock->getTag('subpackage')->getDescription(); } $url .= '/' . $class . '.html'; return $url; }
public function testToString() { $classReflection = new Zend_Reflection_Class('Zend_Reflection_TestSampleClass5'); $classDocblock = $classReflection->getDocblock(); $expectedString = 'Docblock [ /* Docblock */ ] {' . PHP_EOL . PHP_EOL . ' - Tags [1] {' . PHP_EOL . ' Docblock Tag [ * @author ]' . PHP_EOL . ' }' . PHP_EOL . '}' . PHP_EOL; $this->assertEquals($expectedString, (string) $classDocblock); }
public function testTagDescriptionIsReturned() { $classReflection = new Zend_Reflection_Class('Zend_Reflection_TestSampleClass5'); $authorTag = $classReflection->getDocblock()->getTag('author'); $this->assertEquals($authorTag->getDescription(), 'Ralph Schindler <*****@*****.**>'); }
static function getDocblock($class, $type = 'class') { $ret = array(); if ($type == 'method') { $r = $class; } else { $r = new Zend_Reflection_Class($class); } if ($r->getDocComment()) { $d = $r->getDocblock(); if ($d) { $d = $d->getTags(); } if ($d) { foreach ($d as $el) { $ret[$el->getName()] = $el->getDescription(); } } } $pk = method_exists($r, 'getParentClass') ? $r->getParentClass() : false; if ($pk) { $inner = self::getDocblock($pk->name); if ($inner) { $ret = array_merge($inner, $ret); } } return $ret; }