Router.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * @link http://www.yiiframework.com/
  4. * @copyright Copyright (c) 2008 Yii Software LLC
  5. * @license http://www.yiiframework.com/license/
  6. */
  7. namespace yii\debug\models;
  8. use yii\base\Model;
  9. use yii\log\Logger;
  10. /**
  11. * Router model
  12. *
  13. * @author Dmitriy Bashkarev <dmitriy@bashkarev.com>
  14. * @since 2.0.8
  15. */
  16. class Router extends Model
  17. {
  18. /**
  19. * @var array logged messages.
  20. */
  21. public $messages = [];
  22. /**
  23. * @var string|null info message.
  24. */
  25. public $message;
  26. /**
  27. * @var array logged rules.
  28. * ```php
  29. * [
  30. * [
  31. * 'rule' => (string),
  32. * 'match' => (bool),
  33. * 'parent'=> parent class (string)
  34. * ]
  35. * ]
  36. * ```
  37. */
  38. public $logs = [];
  39. /**
  40. * @var int count, before match.
  41. */
  42. public $count = 0;
  43. /**
  44. * @var bool
  45. */
  46. public $hasMatch = false;
  47. /**
  48. * @inheritdoc
  49. */
  50. public function init()
  51. {
  52. parent::init();
  53. $last = null;
  54. foreach ($this->messages as $message) {
  55. if ($message[1] === Logger::LEVEL_TRACE && is_string($message[0])) {
  56. $this->message = $message[0];
  57. } elseif (isset($message[0]['rule'], $message[0]['match'])) {
  58. if (!empty($last['parent']) && $last['parent'] === $message[0]['rule']) {
  59. continue;
  60. }
  61. $this->logs[] = $message[0];
  62. ++$this->count;
  63. if ($message[0]['match']) {
  64. $this->hasMatch = true;
  65. }
  66. $last = $message[0];
  67. }
  68. }
  69. }
  70. }