Skip to content

Commit b302f15

Browse files
authored
Merge pull request #7172 from kenjis/fix-debugbar-collectors-viewer
fix: cannot create shared View instance when using debugbar
2 parents 8c8ed6d + 4d73ea1 commit b302f15

3 files changed

Lines changed: 15 additions & 36 deletions

File tree

phpstan-baseline.neon.dist

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,6 @@ parameters:
100100
count: 13
101101
path: system/Database/SQLSRV/Forge.php
102102

103-
-
104-
message: "#^Call to an undefined method CodeIgniter\\\\View\\\\RendererInterface\\:\\:getPerformanceData\\(\\)\\.$#"
105-
count: 1
106-
path: system/Debug/Toolbar/Collectors/Events.php
107-
108103
-
109104
message: "#^Property CodeIgniter\\\\Log\\\\Logger\\:\\:\\$logCache \\(array\\) on left side of \\?\\? is not nullable\\.$#"
110105
count: 1

system/Debug/Toolbar/Collectors/Events.php

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@
1111

1212
namespace CodeIgniter\Debug\Toolbar\Collectors;
1313

14-
use CodeIgniter\View\RendererInterface;
15-
use Config\Services;
16-
1714
/**
18-
* Views collector
15+
* Events collector
1916
*/
2017
class Events extends BaseCollector
2118
{
@@ -25,7 +22,7 @@ class Events extends BaseCollector
2522
*
2623
* @var bool
2724
*/
28-
protected $hasTimeline = false;
25+
protected $hasTimeline = true;
2926

3027
/**
3128
* Whether this collector needs to display
@@ -51,21 +48,6 @@ class Events extends BaseCollector
5148
*/
5249
protected $title = 'Events';
5350

54-
/**
55-
* Instance of the Renderer service
56-
*
57-
* @var RendererInterface
58-
*/
59-
protected $viewer;
60-
61-
/**
62-
* Constructor.
63-
*/
64-
public function __construct()
65-
{
66-
$this->viewer = Services::renderer();
67-
}
68-
6951
/**
7052
* Child classes should implement this to return the timeline data
7153
* formatted for correct usage.
@@ -74,12 +56,12 @@ protected function formatTimelineData(): array
7456
{
7557
$data = [];
7658

77-
$rows = $this->viewer->getPerformanceData();
59+
$rows = \CodeIgniter\Events\Events::getPerformanceLogs();
7860

7961
foreach ($rows as $info) {
8062
$data[] = [
81-
'name' => 'View: ' . $info['view'],
82-
'component' => 'Views',
63+
'name' => 'Event: ' . $info['event'],
64+
'component' => 'Events',
8365
'start' => $info['start'],
8466
'duration' => $info['end'] - $info['start'],
8567
];

system/Debug/Toolbar/Collectors/Views.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ class Views extends BaseCollector
6060
protected $title = 'Views';
6161

6262
/**
63-
* Instance of the Renderer service
63+
* Instance of the shared Renderer service
6464
*
65-
* @var RendererInterface
65+
* @var RendererInterface|null
6666
*/
6767
protected $viewer;
6868

@@ -73,12 +73,9 @@ class Views extends BaseCollector
7373
*/
7474
protected $views = [];
7575

76-
/**
77-
* Constructor.
78-
*/
79-
public function __construct()
76+
private function initViewer(): void
8077
{
81-
$this->viewer = Services::renderer();
78+
$this->viewer ??= Services::renderer();
8279
}
8380

8481
/**
@@ -87,6 +84,8 @@ public function __construct()
8784
*/
8885
protected function formatTimelineData(): array
8986
{
87+
$this->initViewer();
88+
9089
$data = [];
9190

9291
$rows = $this->viewer->getPerformanceData();
@@ -121,8 +120,9 @@ protected function formatTimelineData(): array
121120
*/
122121
public function getVarData(): array
123122
{
124-
return [
123+
$this->initViewer();
125124

125+
return [
126126
'View Data' => $this->viewer->getData(),
127127
];
128128
}
@@ -132,6 +132,8 @@ public function getVarData(): array
132132
*/
133133
public function getBadgeValue(): int
134134
{
135+
$this->initViewer();
136+
135137
return count($this->viewer->getPerformanceData());
136138
}
137139

0 commit comments

Comments
 (0)