コード例 #1
0
 public static function inspectClass(ReflectionClass $clazz)
 {
     /*Method[]*/
     $methods = $clazz->getMethods();
     /*ServiceDescriptor*/
     $serviceDescriptor = new ServiceDescriptor($clazz);
     for ($i = 0, $max = count($methods); $i < $max; $i++) {
         /*MethodDescriptor*/
         $descriptor = new MethodDescriptor();
         $descriptor->setMethodName($methods[$i]->getName());
         //      /*Class*/ $returnType = $methods[ $i ].getReturnType();
         $descriptor->setReturnType("Object");
         /*ReflectionParameter[]*/
         $args = $methods[$i]->getParameters();
         for ($k = 0, $arglen = count($args); $k < $arglen; $k++) {
             /*ArgumentDescriptor*/
             $argDesc = new ArgumentDescriptor();
             $argDesc->setArgumentName("arg" . $k);
             $argDesc->setArgumentType($args[$k]->isArray() ? "Array of Object" : $args[$k]->getDeclaringClass()->getName());
             $descriptor->addArgument($argDesc);
         }
         $serviceDescriptor->addMethod($descriptor);
     }
     return $serviceDescriptor;
 }
コード例 #2
0
 /**
  * @return null|ArgumentDescriptor
  */
 public function getInheritedElement()
 {
     if ($this->method instanceof MethodDescriptor && $this->method->getInheritedElement() instanceof MethodDescriptor) {
         $parents = $this->method->getInheritedElement()->getArguments();
         foreach ($parents as $parentArgument) {
             if ($parentArgument->getName() === $this->getName()) {
                 return $parentArgument;
             }
         }
     }
     return null;
 }
コード例 #3
0
 /**
  * @return Collection
  */
 public function getMagicMethods()
 {
     /** @var Collection $methodTags */
     $methodTags = clone $this->getTags()->get('method', new Collection());
     $methods = new Collection();
     /** @var Tag\MethodDescriptor $methodTag */
     foreach ($methodTags as $methodTag) {
         $method = new MethodDescriptor();
         $method->setName($methodTag->getMethodName());
         $method->setDescription($methodTag->getDescription());
         $method->setParent($this);
         $methods->add($method);
     }
     return $methods;
 }
コード例 #4
0
ファイル: locallib.php プロジェクト: vuchannguyen/web
 protected function init_service_class()
 {
     parent::init_service_class();
     //allow access to data about methods available.
     $this->zend_server->setClass("MethodDescriptor");
     MethodDescriptor::$classnametointrospect = $this->service_class;
 }
コード例 #5
0
 /**
  * @return Collection
  */
 public function getMagicMethods()
 {
     /** @var Collection $methodTags */
     $methodTags = clone $this->getTags()->get('method', new Collection());
     if ($this->getParent() instanceof static) {
         $methodTags->merge($this->getParent()->getMagicMethods());
     }
     $methods = new Collection();
     /** @var Tag\MethodDescriptor $methodTag */
     foreach ($methodTags as $methodTag) {
         $method = new MethodDescriptor();
         $method->setName($methodTag->getVariableName());
         $method->setDescription($methodTag->getDescription());
         $methods->add($method);
     }
     return $methods;
 }
コード例 #6
0
 /**
  * Generates user rpc interface which is defined in proto,
  * such as Failed() and ErrorText()
  *
  * @param MethodDescriptor  $method  MethodDescriptor to generate interface
  * @param CodeStringBuffer  $buffer  Buffer to write code to
  *
  * @return null
  */
 private function _createUserMethod(MethodDescriptor $method, CodeStringBuffer $buffer)
 {
     $buffer->append('')->append('public function ' . $method->getName() . '($request, $response, $closure)')->append('{')->increaseIdentation()->append('$this->CallMethod(\'' . $method->getName() . '\', $request, $response, $closure);')->decreaseIdentation()->append('}');
 }
コード例 #7
0
 /**
  * @return Collection
  */
 public function getMagicMethods()
 {
     /** @var Collection $methodTags */
     $methodTags = clone $this->getTags()->get('method', new Collection());
     $methods = new Collection();
     /** @var Tag\MethodDescriptor $methodTag */
     foreach ($methodTags as $methodTag) {
         $method = new MethodDescriptor();
         $method->setName($methodTag->getMethodName());
         $method->setDescription($methodTag->getDescription());
         $method->setParent($this);
         $returnTags = $method->getTags()->get('return', new Collection());
         $returnTags->add($methodTag->getResponse());
         foreach ($methodTag->getArguments() as $name => $argument) {
             $method->getArguments()->set($name, $argument);
         }
         $methods->add($method);
     }
     if ($this->getParent() instanceof static) {
         $methods = $methods->merge($this->getParent()->getMagicMethods());
     }
     return $methods;
 }
コード例 #8
0
 /**
  * Adds new method to service
  *
  * @param MethodDescriptor $method
  *
  * @return null
  */
 public function addMethod(MethodDescriptor $method)
 {
     $this->_methods[$method->getName()] = $method;
 }