PHP Classes

File: src/Outputs/Output.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Var-Dump   src/Outputs/Output.php   Download  
File: src/Outputs/Output.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Var-Dump
Show the value of a variable in colored way
Author: By
Last change:
Date: 1 month ago
Size: 2,225 bytes
 

Contents

Class file image Download
<?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\Outputs;

use
Chevere\VarDump\Interfaces\FormatInterface;
use
Chevere\VarDump\Interfaces\OutputInterface;
use
Chevere\VarDump\Interfaces\VarDumperInterface;
use
Chevere\Writer\Interfaces\WriterInterface;

abstract class
Output implements OutputInterface
{
    private
WriterInterface $writer;

   
/**
     * @var array<array<string, mixed>>
     */
   
private array $trace;

    private
string $caller;

    final public function
setUp(WriterInterface $writer, array $trace): void
   
{
       
$this->writer = $writer;
       
$this->trace = $trace;
       
$frame = $this->trace[0] ?? [];
       
/** @var string $class */
       
$class = $frame['class'] ?? '';
       
/** @var string $type */
       
$type = $frame['type'] ?? '';
       
$this->caller = $class . $type;
       
/** @var ?string $function */
       
$function = $frame['function'] ?? null;
        if (
$function !== null) {
           
$this->caller .= $function . '()';
        }
    }

    public function
writeCallerFile(FormatInterface $format): void
   
{
       
$highlight = $this->getCallerFile($format);
       
$this->writer()->write(
            <<<PLAIN

           
{$highlight}

PLAIN
        );
    }

    final public function
trace(): array
    {
        return
$this->trace;
    }

    final public function
caller(): string
   
{
        return
$this->caller;
    }

    protected function
getCallerFile(FormatInterface $format): string
   
{
       
$item = $this->trace[0] ?? [];
       
// @codeCoverageIgnoreStart
       
if (! isset($item['file'])) {
            return
'@';
        }
       
// @codeCoverageIgnoreEnd
       
$fileLine = $item['file'] // @phpstan-ignore-line
           
. ':'
           
. $item['line'];

        return
$format->highlight(
           
VarDumperInterface::FILE,
           
$fileLine
       
);
    }

    final protected function
writer(): WriterInterface
   
{
        return
$this->writer;
    }
}