<?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\Interfaces;
use Chevere\Parameter\Interfaces\TypeInterface;
use Chevere\VarDump\Processors\ArrayProcessor;
use Chevere\VarDump\Processors\BoolProcessor;
use Chevere\VarDump\Processors\FloatProcessor;
use Chevere\VarDump\Processors\IntProcessor;
use Chevere\VarDump\Processors\NullProcessor;
use Chevere\VarDump\Processors\ObjectProcessor;
use Chevere\VarDump\Processors\ResourceProcessor;
use Chevere\VarDump\Processors\StringProcessor;
use Chevere\Writer\Interfaces\WriterInterface;
/**
* Describes the component in charge of handling variable dumping process.
*/
interface VarDumperInterface
{
public const FILE = '_file';
public const CLASS_REG = '_class';
public const CLASS_ANON = 'class@anonymous';
public const OPERATOR = '_operator';
public const FUNCTION = '_function';
public const MODIFIER = '_modifier';
public const VARIABLE = '_variable';
public const EMPHASIS = '_emphasis';
/**
* @var array<string, string>
*/
public const PROCESSORS = [
TypeInterface::BOOL => BoolProcessor::class,
TypeInterface::ARRAY => ArrayProcessor::class,
TypeInterface::OBJECT => ObjectProcessor::class,
TypeInterface::INT => IntProcessor::class,
TypeInterface::STRING => StringProcessor::class,
TypeInterface::FLOAT => FloatProcessor::class,
TypeInterface::NULL => NullProcessor::class,
TypeInterface::RESOURCE => ResourceProcessor::class,
];
/**
* Provides access to the `$writer` instance.
*/
public function writer(): WriterInterface;
/**
* Provides access to the `$format` instance.
*/
public function format(): FormatInterface;
/**
* Provides access to the `$dumpable` instance.
*/
public function dumpable(): VarDumpableInterface;
/**
* Return an instance with the specified `$indent`.
*
* This method MUST retain the state of the current instance, and return
* an instance that contains the specified `$indent`.
*/
public function withIndent(int $indent): self;
/**
* Provides access to the instance indent value.
*/
public function indent(): int;
/**
* Provides access to the instance indent string.
*/
public function indentString(): string;
/**
* Return an instance with the specified `$depth`.
*
* This method MUST retain the state of the current instance, and return
* an instance that contains the specified `$depth`.
*/
public function withDepth(int $depth): self;
/**
* Provides access to the instance `$depth`.
*/
public function depth(): int;
/**
* Process the dump.
*/
public function withProcess(): self;
public function objectReferences(): ObjectIdsInterface;
}
|