PHP Classes

File: src/VarOutput.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Var-Dump   src/VarOutput.php   Download  
File: src/VarOutput.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: 1,776 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\VarOutputInterface;
use
Chevere\Writer\Interfaces\WriterInterface;

final class
VarOutput implements VarOutputInterface
{
    private
ObjectIds $objectReferences;

   
/**
     * @param array<array<string, mixed>> $trace
     */
   
public function __construct(
        private
WriterInterface $writer,
        private array
$trace,
        private
FormatInterface $format,
    ) {
    }

    public function
process(OutputInterface $output, mixed ...$variables): void
   
{
       
$output->setUp($this->writer, $this->trace);
       
$output->prepare();
       
$output->writeCallerFile($this->format);
       
$this->handleArgs(...$variables);
       
$output->finalize();
    }

    private function
handleArgs(mixed ...$variables): void
   
{
       
$aux = 0;
        foreach (
$variables as $name => $value) {
           
$this->objectReferences = new ObjectIds();
           
$aux++;
            if (
is_int($name)) {
               
$name = $aux;
            }
           
$varDumper = new VarDumper(
               
$this->writer,
               
$this->format,
                new
VarDumpable($value),
               
$this->objectReferences
           
);
           
$this->writer->write(
               
str_repeat("\n", (int) ($aux === 1 ?: 2))
                .
strval($name) . ': '
           
);
           
$varDumper->withProcess();
        }
    }
}