PHP Classes

File: src/VarDump.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Var-Dump   src/VarDump.php   Download  
File: src/VarDump.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,240 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;

use
Chevere\VarDump\Interfaces\FormatInterface;
use
Chevere\VarDump\Interfaces\OutputInterface;
use
Chevere\VarDump\Interfaces\VarDumpInterface;
use
Chevere\Writer\Interfaces\WriterInterface;
use
Chevere\Writer\StreamWriter;
use function
Chevere\Writer\streamTemp;

final class
VarDump implements VarDumpInterface
{
   
/**
     * @var array<mixed>
     */
   
private array $variables = [];

    private
int $shift = 0;

   
/**
     * @var array<array<string, mixed>>
     */
   
private array $debugBacktrace = [];

    public function
__construct(
        private
FormatInterface $format,
        private
OutputInterface $output
   
) {
    }

    public function
withVariables(mixed ...$variables): VarDumpInterface
   
{
       
$new = clone $this;
       
$new->variables = $variables;

        return
$new;
    }

    public function
withShift(int $shift): VarDumpInterface
   
{
       
$new = clone $this;
       
$new->shift = $shift;

        return
$new;
    }

    public function
process(WriterInterface $writer): void
   
{
        if (
$this->variables === []) {
            return;
        }
       
$this->setDebugBacktrace();
        (new
VarOutput(
           
$writer,
           
$this->debugBacktrace,
           
$this->format,
        ))
            ->
process($this->output, ...$this->variables);
    }

    public function
export(): string
   
{
       
$temp = streamTemp();
       
$tempWriter = new StreamWriter($temp);
       
$this->process($tempWriter);

        return
$tempWriter->__toString();
    }

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

    public function
shift(): int
   
{
        return
$this->shift;
    }

   
/**
     * @infection-ignore-all
     */
   
private function setDebugBacktrace(): void
   
{
       
$this->debugBacktrace = debug_backtrace();
        for (
$i = 0; $i <= $this->shift; $i++) {
           
array_shift($this->debugBacktrace);
        }
    }
}