8
0

add Twig collector

Dieser Commit ist enthalten in:
Daniel Seifert 2025-03-24 08:08:59 +01:00
Ursprung f3a7b00ea8
Commit 1309aa5976
2 geänderte Dateien mit 49 neuen und 12 gelöschten Zeilen

Datei anzeigen

@ -24,6 +24,7 @@ use D3\DebugBar\Application\Models\Exceptions\UnavailableException;
use D3\DebugBar\Application\Models\TimeDataCollectorHandler;
use DebugBar\Bridge\DoctrineCollector;
use DebugBar\Bridge\MonologCollector;
use DebugBar\Bridge\NamespacedTwigProfileCollector;
use DebugBar\DataCollector\ExceptionsCollector;
use DebugBar\DataCollector\MemoryCollector;
use DebugBar\DataCollector\MessagesCollector;
@ -37,18 +38,22 @@ use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Logging\DebugStack;
use Monolog\Logger;
use OxidEsales\Eshop\Core\Controller\BaseController;
use OxidEsales\Eshop\Core\DatabaseProvider;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridge;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
use OxidEsales\Twig\TwigEngine;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use ReflectionClass;
use ReflectionException;
use Twig\Profiler\Profile;
class DebugBarComponent extends BaseController
{
/** @var DebugBar|null */
protected $debugBar = null;
/** @var JavascriptRenderer */
protected $debugBarRenderer;
protected DebugBar|null $debugBar = null;
protected null|JavascriptRenderer $debugBarRenderer = null;
/**
* Marking object as component
@ -57,9 +62,9 @@ class DebugBarComponent extends BaseController
protected $_blIsComponent = true;
/**
* @throws ContainerExceptionInterface
* @throws DebugBarException
* @throws DatabaseConnectionException
* @throws ReflectionException
* @throws NotFoundExceptionInterface
*/
public function __construct()
{
@ -112,6 +117,18 @@ class DebugBarComponent extends BaseController
return new SmartyCollector($smarty);
}
/**
* @return NamespacedTwigProfileCollector
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function getTwigCollector(): NamespacedTwigProfileCollector
{
/** @var Profile $profile */
$profile = ContainerFactory::getInstance()->getContainer()->get(Profile::class);
return new NamespacedTwigProfileCollector($profile);
}
/**
* @return OxidShopCollector
*/
@ -154,9 +171,9 @@ class DebugBarComponent extends BaseController
/**
* @param DebugBar $debugbar
* @return void
* @throws DatabaseConnectionException
* @throws ContainerExceptionInterface
* @throws DebugBarException
* @throws ReflectionException
* @throws NotFoundExceptionInterface
*/
public function addCollectors(DebugBar $debugbar): void
{
@ -171,7 +188,17 @@ class DebugBarComponent extends BaseController
// add custom collectors
$debugbar->addCollector($this->getOxidShopCollector());
$debugbar->addCollector($this->getOxidConfigCollector());
$debugbar->addCollector($this->getSmartyCollector());
/** @var TemplateRendererBridge $templateRendererBridge */
$templateRendererBridge = ContainerFactory::getInstance()->getContainer()->get(TemplateRendererBridgeInterface::class);
switch (get_class($templateRendererBridge->getTemplateRenderer()->getTemplateEngine())) {
case TwigEngine::class:
$debugbar->addCollector($this->getTwigCollector());
break;
default:
dumpvar(get_class($templateRendererBridge->getTemplateRenderer()->getTemplateEngine()));
}
$debugbar->addCollector($this->getMonologCollector());
$debugbar->addCollector($this->getDoctrineCollector());
$debugbar->addCollector($this->getOxidVersionCollector());
@ -179,6 +206,8 @@ class DebugBarComponent extends BaseController
/**
* @return void
* @throws UnavailableException
* @throws ReflectionException
*/
public function addTimelineMessures(): void
{

Datei anzeigen

@ -6,4 +6,12 @@ services:
Psr\Log\LoggerInterface:
class: Monolog\Logger
factory: ['@OxidEsales\EshopCommunity\Internal\Framework\Logger\Factory\LoggerFactoryInterface', 'create']
public: true
public: true
Twig\Profiler\Profile:
class: Twig\Profiler\Profile
public: true
shared: true
Twig\Extension\ProfilerExtension:
tags: [ 'twig.extension' ]