예제 #1
0
 /**
  * getMethods() test
  *
  * Call as method call
  *
  * Returns: array
  */
 public function testGetMethods()
 {
     $r = new Reflection\ReflectionClass(new \ReflectionClass('\\Zend\\Server\\Reflection'));
     $methods = $r->getMethods();
     $this->assertTrue(is_array($methods));
     foreach ($methods as $m) {
         $this->assertTrue($m instanceof Reflection\ReflectionMethod);
     }
 }
예제 #2
0
 /**
  * Build XML service description from reflection class
  *
  * @param  \Zend\Server\Reflection\ReflectionClass $refclass
  * @param  DOMElement $target target XML element
  * @return void
  */
 protected function _addService(ServerReflectionClass $refclass, \DOMElement $target)
 {
     foreach ($refclass->getMethods() as $method) {
         if (!$method->isPublic() || $method->isConstructor() || '__' == substr($method->name, 0, 2)) {
             continue;
         }
         foreach ($method->getPrototypes() as $proto) {
             $op = $this->_xml->createElement('operation');
             $op->setAttribute('name', $method->getName());
             $rettype = $this->_registerType($proto->getReturnType());
             $op->setAttribute('returnType', $rettype);
             foreach ($proto->getParameters() as $param) {
                 $arg = $this->_xml->createElement('argument');
                 $arg->setAttribute('name', $param->getName());
                 $type = $param->getType();
                 if ($type == 'mixed' && ($pclass = $param->getClass())) {
                     $type = $pclass->getName();
                 }
                 $ptype = $this->_registerType($type);
                 $arg->setAttribute('type', $ptype);
                 if ($param->isDefaultValueAvailable()) {
                     $arg->setAttribute('defaultvalue', $param->getDefaultValue());
                 }
                 $op->appendChild($arg);
             }
             $target->appendChild($op);
         }
     }
 }