| 
<?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);
 
 // @codeCoverageIgnoreStart
 
 namespace Chevere\VarDump {
 use Chevere\VarDump\Formats\ConsoleFormat;
 use Chevere\VarDump\Formats\HtmlFormat;
 use Chevere\VarDump\Formats\PlainFormat;
 use Chevere\VarDump\Interfaces\VarDumpInterface;
 use Chevere\VarDump\Outputs\ConsoleOutput;
 use Chevere\VarDump\Outputs\HtmlOutput;
 use Chevere\VarDump\Outputs\PlainOutput;
 use Chevere\Writer\Interfaces\WritersInterface;
 use Chevere\Writer\StreamWriter;
 use Chevere\Writer\Writers;
 use Chevere\Writer\WritersInstance;
 use LogicException;
 use function Chevere\Writer\streamFor;
 
 function varDumpPlain(): VarDumpInterface
 {
 return
 new VarDump(
 new PlainFormat(),
 new PlainOutput()
 );
 }
 
 function varDumpConsole(): VarDumpInterface
 {
 return
 new VarDump(
 new ConsoleFormat(),
 new ConsoleOutput()
 );
 }
 
 function varDumpHtml(): VarDumpInterface
 {
 return
 new VarDump(
 new HtmlFormat(),
 new HtmlOutput()
 );
 }
 
 function varDump(): VarDumpInterface
 {
 try {
 return VarDumpInstance::get();
 } catch (LogicException $e) {
 return PHP_SAPI === 'cli'
 ? varDumpConsole()
 : varDumpHtml();
 }
 }
 
 function writers(): WritersInterface
 {
 try {
 return WritersInstance::get();
 } catch (LogicException $e) {
 return (new Writers())
 ->withOutput(
 new StreamWriter(streamFor('php://output', 'w'))
 )
 ->withError(
 new StreamWriter(streamFor('php://stderr', 'w'))
 );
 }
 }
 }
 
 namespace {
 use function Chevere\VarDump\varDump;
 use function Chevere\VarDump\writers;
 
 if (! function_exists('vd')) {
 /**
 * Dumps information about one or more variables to the registered output writer stream
 * @phpstan-ignore-next-line
 */
 function vd(...$variables): void
 {
 varDump()
 ->withShift(1)
 ->withVariables(...$variables)
 ->process(writers()->output());
 }
 }
 if (! function_exists('vdd')) {
 /**
 * Dumps information about one or more variables to the registered output writer stream and die()
 * @codeCoverageIgnore
 * @phpstan-ignore-next-line
 */
 function vdd(...$variables): void
 {
 varDump()
 ->withShift(1)
 ->withVariables(...$variables)
 ->process(writers()->output());
 exit(0);
 }
 }
 }
 // @codeCoverageIgnoreEnd
 
 |