示例#1
0
 /**
  * Creates a function signature instance from the supplied reflection.
  *
  * @param \ReflectionFunctionAbstract $reflection
  *
  * @return self
  */
 public static function fromReflection(\ReflectionFunctionAbstract $reflection)
 {
     $returnsReference = $reflection->returnsReference();
     $name = $reflection->getShortName();
     $parameterExpressions = self::getParameterExpressionsFromReflection($reflection);
     if ($reflection->isClosure()) {
         return self::closure($returnsReference, $parameterExpressions, array_keys($reflection->getStaticVariables()));
     } elseif ($reflection instanceof \ReflectionMethod) {
         if ($reflection->isPublic()) {
             $accessModifier = self::ACCESS_PUBLIC;
         } elseif ($reflection->isProtected()) {
             $accessModifier = self::ACCESS_PROTECTED;
         } else {
             $accessModifier = self::ACCESS_PRIVATE;
         }
         if ($reflection->isAbstract()) {
             $polymorphModifier = self::POLYMORPH_ABSTRACT;
         } elseif ($reflection->isFinal()) {
             $polymorphModifier = self::POLYMORPH_FINAL;
         } else {
             $polymorphModifier = null;
         }
         return self::method($returnsReference, $accessModifier, $polymorphModifier, $reflection->isStatic(), $name, $parameterExpressions);
     } else {
         return self::func($returnsReference, $name, $parameterExpressions);
     }
 }
示例#2
0
文件: Method.php 项目: jnvsor/kint
 public function __construct(ReflectionFunctionAbstract $method)
 {
     $this->name = $method->getShortName();
     $this->filename = $method->getFilename();
     $this->startline = $method->getStartLine();
     $this->endline = $method->getEndLine();
     $this->docstring = $method->getDocComment();
     $this->operator = $this->static ? Kint_Object::OPERATOR_STATIC : Kint_Object::OPERATOR_OBJECT;
     $this->access = Kint_Object::ACCESS_PUBLIC;
     if ($method instanceof ReflectionMethod) {
         $this->static = $method->isStatic();
         $this->abstract = $method->isAbstract();
         $this->final = $method->isFinal();
         $this->owner_class = $method->getDeclaringClass()->name;
         if ($method->isProtected()) {
             $this->access = Kint_Object::ACCESS_PROTECTED;
         } elseif ($method->isPrivate()) {
             $this->access = Kint_Object::ACCESS_PRIVATE;
         }
     }
     foreach ($method->getParameters() as $param) {
         $this->parameters[] = new Kint_Object_Parameter($param);
     }
     if ($this->docstring) {
         if (preg_match('/@return\\s+(.*)\\r?\\n/m', $this->docstring, $matches)) {
             if (!empty($matches[1])) {
                 $this->returntype = $matches[1];
             }
         }
     }
     $docstring = new Kint_Object_Representation_Docstring($this->docstring, $this->filename, $this->startline);
     $docstring->implicit_label = true;
     $this->addRepresentation($docstring);
 }