Example #1
0
 /**
  * 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);
    }
Example #3
0
 /**
  * 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);
 }
Example #5
0
 public function testTagDescriptionIsReturned()
 {
     $classReflection = new Zend_Reflection_Class('Zend_Reflection_TestSampleClass5');
     $authorTag = $classReflection->getDocblock()->getTag('author');
     $this->assertEquals($authorTag->getDescription(), 'Ralph Schindler <*****@*****.**>');
 }
Example #6
0
 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;
 }