public function testMethodFromReflection() { $ref = new Zend_Reflection_Method('Zend_Reflection_TestSampleSingleClass', 'someMethod'); $codeGenMethod = Zend_CodeGenerator_Php_Method::fromReflection($ref); $target = <<<EOS /** * Enter description here... * * @return bool */ public function someMethod() { /* test test */ } EOS; $this->assertEquals($target, (string) $codeGenMethod); }
/** * fromReflection() - build a Code Generation PHP Object from a Class Reflection * * @param Zend_Reflection_Class $reflectionClass * @return Zend_CodeGenerator_Php_Class */ 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($reflectionClass->getInterfaces(), $parentClass->getInterfaces()); } else { $interfaces = $reflectionClass->getInterfaces(); } $interfaceNames = array(); foreach ($interfaces as $interface) { $interfaceNames[] = $interface->getName(); } $class->setImplementedInterfaces($interfaceNames); $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() as $reflectionMethod) { if ($reflectionMethod->getDeclaringClass()->getName() == $class->getName()) { $methods[] = Zend_CodeGenerator_Php_Method::fromReflection($reflectionMethod); } } $class->setMethods($methods); return $class; }