Namespaces

  • Latte
    • Loaders
    • Macros
    • Runtime
  • Nette
    • Application
      • Responses
      • Routers
      • UI
    • Bridges
      • ApplicationDI
      • ApplicationLatte
      • ApplicationTracy
      • CacheDI
      • CacheLatte
      • DatabaseDI
      • DatabaseTracy
      • DITracy
      • FormsDI
      • FormsLatte
      • Framework
      • HttpDI
      • HttpTracy
      • MailDI
      • ReflectionDI
      • SecurityDI
      • SecurityTracy
    • Caching
      • Storages
    • ComponentModel
    • Database
      • Conventions
      • Drivers
      • Table
    • DI
      • Config
        • Adapters
      • Extensions
    • Forms
      • Controls
      • Rendering
    • Http
    • Iterators
    • Loaders
    • Localization
    • Mail
    • Neon
    • PhpGenerator
    • Reflection
    • Security
    • Utils
  • none
  • Tracy
    • Bridges
      • Nette

Classes

  • TracyExtension
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  1: <?php
  2: 
  3: /**
  4:  * This file is part of the Tracy (https://tracy.nette.org)
  5:  * Copyright (c) 2004 David Grudl (https://davidgrudl.com)
  6:  */
  7: 
  8: namespace Tracy\Bridges\Nette;
  9: 
 10: use Nette;
 11: 
 12: 
 13: /**
 14:  * Tracy extension for Nette DI.
 15:  */
 16: class TracyExtension extends Nette\DI\CompilerExtension
 17: {
 18:     public $defaults = [
 19:         'email' => NULL,
 20:         'fromEmail' => NULL,
 21:         'logSeverity' => NULL,
 22:         'editor' => NULL,
 23:         'browser' => NULL,
 24:         'errorTemplate' => NULL,
 25:         'strictMode' => NULL,
 26:         'showBar' => NULL,
 27:         'maxLen' => NULL,
 28:         'maxDepth' => NULL,
 29:         'showLocation' => NULL,
 30:         'scream' => NULL,
 31:         'bar' => [], // of class name
 32:         'blueScreen' => [], // of callback
 33:     ];
 34: 
 35:     /** @var bool */
 36:     private $debugMode;
 37: 
 38:     /** @var bool */
 39:     private $cliMode;
 40: 
 41: 
 42:     public function __construct($debugMode = FALSE, $cliMode = FALSE)
 43:     {
 44:         $this->debugMode = $debugMode;
 45:         $this->cliMode = $cliMode;
 46:     }
 47: 
 48: 
 49:     public function loadConfiguration()
 50:     {
 51:         $this->validateConfig($this->defaults);
 52:         $builder = $this->getContainerBuilder();
 53: 
 54:         $builder->addDefinition($this->prefix('logger'))
 55:             ->setClass('Tracy\ILogger')
 56:             ->setFactory('Tracy\Debugger::getLogger');
 57: 
 58:         $builder->addDefinition($this->prefix('blueScreen'))
 59:             ->setFactory('Tracy\Debugger::getBlueScreen');
 60: 
 61:         $builder->addDefinition($this->prefix('bar'))
 62:             ->setFactory('Tracy\Debugger::getBar');
 63:     }
 64: 
 65: 
 66:     public function afterCompile(Nette\PhpGenerator\ClassType $class)
 67:     {
 68:         $initialize = $class->getMethod('initialize');
 69:         $builder = $this->getContainerBuilder();
 70: 
 71:         $options = $this->config;
 72:         unset($options['bar'], $options['blueScreen']);
 73:         if (isset($options['logSeverity'])) {
 74:             $res = 0;
 75:             foreach ((array) $options['logSeverity'] as $level) {
 76:                 $res |= is_int($level) ? $level : constant($level);
 77:             }
 78:             $options['logSeverity'] = $res;
 79:         }
 80:         foreach ($options as $key => $value) {
 81:             if ($value !== NULL) {
 82:                 $key = ($key === 'fromEmail' ? 'getLogger()->' : '$') . $key;
 83:                 $initialize->addBody($builder->formatPhp(
 84:                     'Tracy\Debugger::' . $key . ' = ?;',
 85:                     Nette\DI\Compiler::filterArguments([$value])
 86:                 ));
 87:             }
 88:         }
 89: 
 90:         $logger = $builder->getDefinition($this->prefix('logger'));
 91:         if ($logger->getFactory()->getEntity() !== 'Tracy\Debugger::getLogger') {
 92:             $initialize->addBody($builder->formatPhp('Tracy\Debugger::setLogger(?);', [$logger]));
 93:         }
 94: 
 95:         if ($this->debugMode) {
 96:             foreach ((array) $this->config['bar'] as $item) {
 97:                 $initialize->addBody($builder->formatPhp(
 98:                     '$this->getService(?)->addPanel(?);',
 99:                     Nette\DI\Compiler::filterArguments([
100:                         $this->prefix('bar'),
101:                         is_string($item) ? new Nette\DI\Statement($item) : $item,
102:                     ])
103:                 ));
104:             }
105: 
106:             if (!$this->cliMode) {
107:                 $initialize->addBody('if ($tmp = $this->getByType("Nette\Http\Session", FALSE)) { $tmp->start(); Tracy\Debugger::dispatch(); };');
108:             }
109:         }
110: 
111:         foreach ((array) $this->config['blueScreen'] as $item) {
112:             $initialize->addBody($builder->formatPhp(
113:                 '$this->getService(?)->addPanel(?);',
114:                 Nette\DI\Compiler::filterArguments([$this->prefix('blueScreen'), $item])
115:             ));
116:         }
117:     }
118: 
119: }
120: 
Nette 2.4-20161109 API API documentation generated by ApiGen 2.8.0