vpietri/magento2-developer-quickdevbar

View on GitHub
Plugin/Framework/App/FrontController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace ADM\QuickDevBar\Plugin\Framework\App;

use Symfony\Component\VarDumper\Dumper\HtmlDumper;
use Symfony\Component\VarDumper\VarDumper;
use Symfony\Component\VarDumper\Cloner\VarCloner;


class FrontController
{
    private  $qdbHelper;

    private  $dumper;

    /**
     * @param \ADM\QuickDevBar\Service\Dumper $dumper
     */
    public function __construct(\ADM\QuickDevBar\Helper\Data $qdbHelper,
                                \ADM\QuickDevBar\Service\Dumper $dumper
    )
    {
        $this->qdbHelper = $qdbHelper;
        $this->dumper = $dumper;
    }

    /**
     * @param \Magento\Framework\AppInterface $subject
     * @return void
     */
    public function beforeDispatch(\Magento\Framework\App\FrontControllerInterface $subject)
    {
        if($this->qdbHelper->getQdbConfig('handle_vardumper')) {
            $prevHandler = VarDumper::setHandler($this->dumperHandler(...));
        }
    }

    /**
     * @param $var
     * @return void
     */
    protected function dumperHandler($var)
    {
        $cloner = new VarCloner();
        $dumper = new HtmlDumper();

        $dumper->setTheme('dark');
        $dumpBt = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)[2];

        $output = $dumpBt['function'] != 'dd';
        $dumpOutput = $dumper->dump($cloner->cloneVar($var), $output);
        if($output) {
            $this->dumper->addDump($dumpOutput, $dumpBt);
        }

    }
}