OpenXE/classes/Components/Logger/Context/LoggerContext.php
2021-05-21 08:49:41 +02:00

161 lines
3.0 KiB
PHP

<?php
declare(strict_types=1);
namespace Xentral\Components\Logger\Context;
use DateTimeInterface;
use Exception;
use Throwable;
final class LoggerContext implements ContextInterface
{
/** @var DateTimeInterface $dateTime */
private $dateTime;
/** @var Invocation $invocation */
private $invocation;
/** @var OriginInterface $origin */
private $origin;
/** @var Exception $exception */
private $exception;
/** @var array $dump */
private $dump;
/**
* @param DateTimeInterface $dateTime
* @param Invocation|null $invocation
* @param OriginInterface|null $origin
* @param Throwable|null $exception
* @param array|null $dump
*/
public function __construct(
DateTimeInterface $dateTime,
Invocation $invocation = null,
OriginInterface $origin = null,
Throwable $exception = null,
array $dump = null
) {
$this->dateTime = $dateTime;
$this->invocation = $invocation;
$this->origin = $origin;
$this->exception = $exception;
$this->dump = $dump;
}
/**
* @return DateTimeInterface
*/
public function getTime(): DateTimeInterface
{
return $this->dateTime;
}
/**
* @return string|null
*/
public function getClass(): ?string
{
if ($this->invocation === null) {
return null;
}
return $this->invocation->getClass();
}
/**
* @return string|null
*/
public function getFunction(): ?string
{
if ($this->invocation === null) {
return null;
}
return $this->invocation->getFunction();
}
/**
* @return int
*/
public function getLine(): int
{
if ($this->invocation === null) {
return 0;
}
return $this->invocation->getLine();
}
/**
* @return bool
*/
public function hasOrigin(): bool
{
return $this->origin !== null;
}
/**
* @return bool
*/
public function hasException(): bool
{
return $this->exception !== null;
}
/**
* @return Exception|null
*/
public function getException(): ?Throwable
{
return $this->exception;
}
/**
* @return bool
*/
public function hasDump(): bool
{
return is_array($this->dump) && count($this->dump) > 0;
}
/**
* @return array
*/
public function getDump(): array
{
if (!is_array($this->dump)) {
return [];
}
return $this->dump;
}
/**
* @return string|null
*/
public function getOriginType(): ?string
{
if ($this->origin === null) {
return null;
}
return $this->origin->getType();
}
/**
* @return string|null
*/
public function getOriginDetail(): ?string
{
if ($this->origin === null) {
return null;
}
return $this->origin->getDetail();
}
}