22
33namespace BeyondCode \QueryDetector \Outputs ;
44
5+ use DebugBar \DataCollector \MessagesCollector ;
56use Illuminate \Support \Collection ;
67use Symfony \Component \HttpFoundation \Response ;
78
8- use Barryvdh \Debugbar \Facade as LaravelDebugbarV3 ;
9- use DebugBar \DataCollector \MessagesCollector ;
10- use Fruitcake \LaravelDebugbar \Facades \Debugbar as LaravelDebugbar ;
11-
129class Debugbar implements Output
1310{
1411 protected $ collector ;
@@ -17,26 +14,52 @@ public function boot()
1714 {
1815 $ this ->collector = new MessagesCollector ('N+1 Queries ' );
1916
20- if (class_exists (\Fruitcake \LaravelDebugbar \Facades \Debugbar::class)) {
21- if (!LaravelDebugbar::hasCollector ($ this ->collector ->getName ())) {
22- LaravelDebugbar::addCollector ($ this ->collector );
23- }
17+ $ facade = $ this ->resolveDebugbarFacade ();
18+
19+ if ($ facade === null ) {
2420 return ;
2521 }
2622
27- if (!LaravelDebugbarV3 ::hasCollector ($ this ->collector ->getName ())) {
28- LaravelDebugbarV3 ::addCollector ($ this ->collector );
23+ if (! $ facade ::hasCollector ($ this ->collector ->getName ())) {
24+ $ facade ::addCollector ($ this ->collector );
2925 }
3026 }
3127
3228 public function output (Collection $ detectedQueries , Response $ response )
3329 {
3430 foreach ($ detectedQueries as $ detectedQuery ) {
35- $ this ->collector ->addMessage (sprintf ('Model: %s => Relation: %s - You should add `with(%s)` to eager-load this relation. ' ,
31+ $ this ->collector ->addMessage (sprintf (
32+ 'Model: %s => Relation: %s - You should add `with(%s)` to eager-load this relation. ' ,
3633 $ detectedQuery ['model ' ],
3734 $ detectedQuery ['relation ' ],
3835 $ detectedQuery ['relation ' ]
3936 ));
4037 }
4138 }
39+
40+ /**
41+ * Resolve the installed Debugbar facade at runtime.
42+ *
43+ * Supports barryvdh/laravel-debugbar (v3 and v4+) and
44+ * fruitcake/laravel-debugbar. Returns the first class
45+ * that the autoloader can locate, or null if none exist.
46+ *
47+ * @return string|null
48+ */
49+ protected function resolveDebugbarFacade ()
50+ {
51+ $ candidates = [
52+ 'Barryvdh\Debugbar\Facades\Debugbar ' ,
53+ 'Barryvdh\Debugbar\Facade ' ,
54+ 'Fruitcake\LaravelDebugbar\Facades\Debugbar ' ,
55+ ];
56+
57+ foreach ($ candidates as $ candidate ) {
58+ if (class_exists ($ candidate )) {
59+ return $ candidate ;
60+ }
61+ }
62+
63+ return null ;
64+ }
4265}
0 commit comments