/** * 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); } }
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); }