From 872c14343e752b520bb497011d925dd24a2faa66 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 6 Oct 2020 18:12:05 +0200 Subject: [PATCH] ApplicationExtension, RoutingExtension: detects Tracy by presence of service [Closes nette/di#245] --- src/Bridges/ApplicationDI/ApplicationExtension.php | 13 ++++++++----- src/Bridges/ApplicationDI/RoutingExtension.php | 5 ++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Bridges/ApplicationDI/ApplicationExtension.php b/src/Bridges/ApplicationDI/ApplicationExtension.php index af975a456..7fa000764 100644 --- a/src/Bridges/ApplicationDI/ApplicationExtension.php +++ b/src/Bridges/ApplicationDI/ApplicationExtension.php @@ -50,7 +50,7 @@ public function __construct(bool $debugMode = false, array $scanDirs = null, str public function getConfigSchema(): Nette\Schema\Schema { return Expect::structure([ - 'debugger' => Expect::bool(interface_exists(Tracy\IBarPanel::class)), + 'debugger' => Expect::bool(), 'errorPresenter' => Expect::string('Nette:Error')->dynamic(), 'catchExceptions' => Expect::bool(!$this->debugMode)->dynamic(), 'mapping' => Expect::arrayOf('string|array'), @@ -72,14 +72,11 @@ public function loadConfiguration() ? UI\Presenter::INVALID_LINK_TEXTUAL | ($config->silentLinks ? 0 : UI\Presenter::INVALID_LINK_WARNING) : UI\Presenter::INVALID_LINK_WARNING; - $application = $builder->addDefinition($this->prefix('application')) + $builder->addDefinition($this->prefix('application')) ->setFactory(Nette\Application\Application::class) ->addSetup('$catchExceptions', [$config->catchExceptions]) ->addSetup('$errorPresenter', [$config->errorPresenter]); - if ($config->debugger) { - $application->addSetup([Nette\Bridges\ApplicationTracy\RoutingPanel::class, 'initializePanel']); - } $this->compiler->addExportedType(Nette\Application\Application::class); if ($this->debugMode && ($config->scanDirs || $this->robotLoader) && $this->tempDir) { @@ -112,6 +109,12 @@ public function loadConfiguration() public function beforeCompile() { $builder = $this->getContainerBuilder(); + + if ($this->config->debugger ?? $builder->getByType(Tracy\BlueScreen::class)) { + $builder->getDefinition($this->prefix('application')) + ->addSetup([Nette\Bridges\ApplicationTracy\RoutingPanel::class, 'initializePanel']); + } + $all = []; foreach ($builder->findByType(Nette\Application\IPresenter::class) as $def) { diff --git a/src/Bridges/ApplicationDI/RoutingExtension.php b/src/Bridges/ApplicationDI/RoutingExtension.php index deae3c536..597c841d2 100644 --- a/src/Bridges/ApplicationDI/RoutingExtension.php +++ b/src/Bridges/ApplicationDI/RoutingExtension.php @@ -28,7 +28,7 @@ public function __construct(bool $debugMode = false) $this->debugMode = $debugMode; $this->config = new class { - /** @var bool */ + /** @var ?bool */ public $debugger; /** @var string[] */ public $routes = []; @@ -37,7 +37,6 @@ public function __construct(bool $debugMode = false) /** @var bool */ public $cache = false; }; - $this->config->debugger = interface_exists(Tracy\IBarPanel::class); } @@ -65,7 +64,7 @@ public function beforeCompile() if ( $this->debugMode && - $this->config->debugger && + ($this->config->debugger ?? $builder->getByType(Tracy\Bar::class)) && ($name = $builder->getByType(Nette\Application\Application::class)) && ($application = $builder->getDefinition($name)) instanceof Definitions\ServiceDefinition ) {