<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chevere\VarDump;
use Chevere\VarDump\Interfaces\VarDumpableInterface;
use Chevere\VarDump\Interfaces\VarDumperInterface;
use LogicException;
use function Chevere\Message\message;
use function Chevere\Parameter\getType;
final class VarDumpable implements VarDumpableInterface
{
private string $type;
private string $processorName;
public function __construct(
private mixed $var
) {
$this->type = getType($this->var);
$this->assertSetProcessorName();
}
public function var(): mixed
{
return $this->var;
}
public function type(): string
{
return $this->type;
}
public function processorName(): string
{
return $this->processorName;
}
/**
* @codeCoverageIgnore
* @infection-ignore-all
*/
private function assertSetProcessorName(): void
{
$processorName = VarDumperInterface::PROCESSORS[$this->type] ?? null;
if (! isset($processorName)) {
throw new LogicException(
(string) message(
'No processor for variable of type `%type%`',
type: $this->type
)
);
}
$this->processorName = $processorName;
}
}
|