本文整理汇总了PHP中ReflectionFunctionAbstract::getEndLine方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionFunctionAbstract::getEndLine方法的具体用法?PHP ReflectionFunctionAbstract::getEndLine怎么用?PHP ReflectionFunctionAbstract::getEndLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ReflectionFunctionAbstract
的用法示例。
在下文中一共展示了ReflectionFunctionAbstract::getEndLine方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
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);
}
示例2: fetchCode
/**
* @param \ReflectionFunctionAbstract $reflection
*
* @return string
*/
protected function fetchCode(\ReflectionFunctionAbstract $reflection)
{
$file = $reflection->getFileName();
if (!file_exists($file)) {
return '';
}
$startLine = $reflection->getStartLine();
return implode('', array_slice(file($file), $startLine, $reflection->getEndLine() - $startLine - 1));
}
示例3: getFunctionBody
/**
*
* @param \ReflectionFunctionAbstract $function
*/
public static function getFunctionBody(\ReflectionFunctionAbstract $function)
{
$source = file($function->getFileName());
$start = $function->getStartLine() - 1;
$end = $function->getEndLine();
$body = implode('', array_slice($source, $start, $end - $start));
$open = strpos($body, '{');
$close = strrpos($body, '}');
return trim(substr($body, $open + 1, (strlen($body) - $close) * -1));
}
示例4: fromReflection
/**
* Creates a function location instance from the supplied reflection.
*
* @param \ReflectionFunctionAbstract $reflection
*
* @return self
*/
public static function fromReflection(\ReflectionFunctionAbstract $reflection)
{
if ($reflection instanceof \ReflectionFunction) {
$namespace = $reflection->getNamespaceName();
} elseif ($reflection instanceof \ReflectionMethod) {
$namespace = $reflection->getDeclaringClass()->getNamespaceName();
} else {
$namespace = null;
}
return new self($reflection->getFileName(), $namespace, $reflection->getStartLine(), $reflection->getEndLine());
}
示例5: LoadSourceLines
private function LoadSourceLines(\ReflectionFunctionAbstract $Reflection)
{
if (!$Reflection->isUserDefined()) {
throw new Functional\FunctionException('Cannot parse function: Function must be user defined');
}
$FileName = $Reflection->getFileName();
if (!file_exists($FileName)) {
throw new Functional\FunctionException('Cannot parse function: Function does not belong to a valid file (cannot be eval\'d code)');
}
$SourceLines = [];
$File = new \SplFileObject($Reflection->getFileName());
$StartLine = $Reflection->getStartLine() - 2;
$File->seek($StartLine);
$EndLine = $Reflection->getEndLine() - 2;
while ($File->key() <= $EndLine) {
$SourceLines[] = trim($File->fgets());
}
unset($File);
$FirstLine =& $SourceLines[0];
$FirstLine = substr($FirstLine, stripos($FirstLine, 'function'));
$LastLine =& $SourceLines[count($SourceLines) - 1];
$LastLine = substr($LastLine, 0, strrpos($LastLine, '}') + 1);
return array_filter($SourceLines);
}
示例6: processFunctionOrMethod
/**
* @param \ReflectionFunctionAbstract $functionOrMethod
*/
private function processFunctionOrMethod(\ReflectionFunctionAbstract $functionOrMethod)
{
if ($functionOrMethod->isInternal()) {
return;
}
$name = $functionOrMethod->getName();
if ($functionOrMethod instanceof \ReflectionMethod) {
$name = $functionOrMethod->getDeclaringClass()->getName() . '::' . $name;
}
if (!isset($this->lookupTable[$functionOrMethod->getFileName()])) {
$this->lookupTable[$functionOrMethod->getFileName()] = [];
}
foreach (range($functionOrMethod->getStartLine(), $functionOrMethod->getEndLine()) as $line) {
$this->lookupTable[$functionOrMethod->getFileName()][$line] = $name;
}
}
示例7: invalidFunctionMessage
/**
* @param string $messageFormat
* @param \ReflectionFunctionAbstract $reflection
*
* @return self
*/
public static function invalidFunctionMessage($messageFormat, \ReflectionFunctionAbstract $reflection)
{
return self::construct(array_merge(['Invalid function %s defined in %s lines %d-%d: ' . $messageFormat, $reflection->getName(), $reflection->getFileName(), $reflection->getStartLine(), $reflection->getEndLine()], array_slice(func_get_args(), 2)));
}
示例8: FunctionHash
private function FunctionHash(\ReflectionFunctionAbstract $Reflection)
{
return md5(implode(' ', [$Reflection->getFileName(), $Reflection->getStartLine(), $Reflection->getEndLine()]));
}