You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
<?php |
|
|
|
namespace Facade\FlareClient; |
|
|
|
use Facade\FlareClient\Stacktrace\Codesnippet; |
|
|
|
class Frame |
|
{ |
|
/** @var string */ |
|
protected $file; |
|
|
|
/** @var int */ |
|
protected $lineNumber; |
|
|
|
/** @var string */ |
|
protected $method; |
|
|
|
/** @var string */ |
|
protected $class; |
|
|
|
public function __construct( |
|
string $file, |
|
int $lineNumber, |
|
string $method = null, |
|
string $class = null |
|
) { |
|
$this->file = $file; |
|
|
|
$this->lineNumber = $lineNumber; |
|
|
|
$this->method = $method; |
|
|
|
$this->class = $class; |
|
} |
|
|
|
public function toArray(): array |
|
{ |
|
$codeSnippet = (new Codesnippet()) |
|
->snippetLineCount(9) |
|
->surroundingLine($this->lineNumber) |
|
->get($this->file); |
|
|
|
return [ |
|
'line_number' => $this->lineNumber, |
|
'method' => $this->getFullMethod(), |
|
'code_snippet' => $codeSnippet, |
|
'file' => $this->file, |
|
]; |
|
} |
|
|
|
private function getFullMethod(): string |
|
{ |
|
$method = $this->method; |
|
|
|
if ($class = $this->class ?? false) { |
|
$method = "{$class}::{$method}"; |
|
} |
|
|
|
return $method; |
|
} |
|
|
|
public function getFile(): string |
|
{ |
|
return $this->file; |
|
} |
|
}
|
|
|