コード例 #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 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->addArgument($name, $argument);
         }
         $methods->add($method);
     }
     if ($this->getParent() instanceof static) {
         $methods = $methods->merge($this->getParent()->getMagicMethods());
     }
     return $methods;
 }