@@ -60,7 +60,7 @@ protected function describeContainerTags(ContainerBuilder $builder, array $optio
6060 foreach ($ this ->findDefinitionsByTag ($ builder , $ showHidden ) as $ tag => $ definitions ) {
6161 $ data [$ tag ] = [];
6262 foreach ($ definitions as $ definition ) {
63- $ data [$ tag ][] = $ this ->getContainerDefinitionData ($ definition , true );
63+ $ data [$ tag ][] = $ this ->getContainerDefinitionData ($ definition , true , false , $ builder , $ options [ ' id ' ] ?? null );
6464 }
6565 }
6666
@@ -76,7 +76,7 @@ protected function describeContainerService(object $service, array $options = []
7676 if ($ service instanceof Alias) {
7777 $ this ->describeContainerAlias ($ service , $ options , $ builder );
7878 } elseif ($ service instanceof Definition) {
79- $ this ->writeData ($ this ->getContainerDefinitionData ($ service , isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ]), $ options );
79+ $ this ->writeData ($ this ->getContainerDefinitionData ($ service , isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ], $ builder , $ options [ ' id ' ] ), $ options );
8080 } else {
8181 $ this ->writeData (\get_class ($ service ), $ options );
8282 }
@@ -106,7 +106,7 @@ protected function describeContainerServices(ContainerBuilder $builder, array $o
106106 if ($ service instanceof Alias) {
107107 $ data ['aliases ' ][$ serviceId ] = $ this ->getContainerAliasData ($ service );
108108 } elseif ($ service instanceof Definition) {
109- $ data ['definitions ' ][$ serviceId ] = $ this ->getContainerDefinitionData ($ service , $ omitTags , $ showArguments );
109+ $ data ['definitions ' ][$ serviceId ] = $ this ->getContainerDefinitionData ($ service , $ omitTags , $ showArguments, $ builder , $ serviceId );
110110 } else {
111111 $ data ['services ' ][$ serviceId ] = \get_class ($ service );
112112 }
@@ -115,9 +115,9 @@ protected function describeContainerServices(ContainerBuilder $builder, array $o
115115 $ this ->writeData ($ data , $ options );
116116 }
117117
118- protected function describeContainerDefinition (Definition $ definition , array $ options = [])
118+ protected function describeContainerDefinition (Definition $ definition , array $ options = [], ContainerBuilder $ builder = null )
119119 {
120- $ this ->writeData ($ this ->getContainerDefinitionData ($ definition , isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ]), $ options );
120+ $ this ->writeData ($ this ->getContainerDefinitionData ($ definition , isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ], $ builder , $ options [ ' id ' ] ?? null ), $ options );
121121 }
122122
123123 protected function describeContainerAlias (Alias $ alias , array $ options = [], ContainerBuilder $ builder = null )
@@ -129,7 +129,7 @@ protected function describeContainerAlias(Alias $alias, array $options = [], Con
129129 }
130130
131131 $ this ->writeData (
132- [$ this ->getContainerAliasData ($ alias ), $ this ->getContainerDefinitionData ($ builder ->getDefinition ((string ) $ alias ), isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ])],
132+ [$ this ->getContainerAliasData ($ alias ), $ this ->getContainerDefinitionData ($ builder ->getDefinition ((string ) $ alias ), isset ($ options ['omit_tags ' ]) && $ options ['omit_tags ' ], isset ($ options ['show_arguments ' ]) && $ options ['show_arguments ' ], $ builder , ( string ) $ alias )],
133133 array_merge ($ options , ['id ' => (string ) $ alias ])
134134 );
135135 }
@@ -217,7 +217,7 @@ protected function getRouteData(Route $route): array
217217 return $ data ;
218218 }
219219
220- private function getContainerDefinitionData (Definition $ definition , bool $ omitTags = false , bool $ showArguments = false ): array
220+ private function getContainerDefinitionData (Definition $ definition , bool $ omitTags = false , bool $ showArguments = false , ContainerBuilder $ builder = null , string $ id = null ): array
221221 {
222222 $ data = [
223223 'class ' => (string ) $ definition ->getClass (),
@@ -235,7 +235,7 @@ private function getContainerDefinitionData(Definition $definition, bool $omitTa
235235 }
236236
237237 if ($ showArguments ) {
238- $ data ['arguments ' ] = $ this ->describeValue ($ definition ->getArguments (), $ omitTags , $ showArguments );
238+ $ data ['arguments ' ] = $ this ->describeValue ($ definition ->getArguments (), $ omitTags , $ showArguments, $ builder , $ id );
239239 }
240240
241241 $ data ['file ' ] = $ definition ->getFile ();
@@ -272,6 +272,8 @@ private function getContainerDefinitionData(Definition $definition, bool $omitTa
272272 }
273273 }
274274
275+ $ data ['usages ' ] = null !== $ builder && null !== $ id ? $ this ->getServiceEdges ($ builder , $ id ) : [];
276+
275277 return $ data ;
276278 }
277279
@@ -381,12 +383,12 @@ private function getCallableData(mixed $callable): array
381383 throw new \InvalidArgumentException ('Callable is not describable. ' );
382384 }
383385
384- private function describeValue (mixed $ value , bool $ omitTags , bool $ showArguments ): mixed
386+ private function describeValue ($ value , bool $ omitTags , bool $ showArguments, ContainerBuilder $ builder = null , string $ id = null ): mixed
385387 {
386388 if (\is_array ($ value )) {
387389 $ data = [];
388390 foreach ($ value as $ k => $ v ) {
389- $ data [$ k ] = $ this ->describeValue ($ v , $ omitTags , $ showArguments );
391+ $ data [$ k ] = $ this ->describeValue ($ v , $ omitTags , $ showArguments, $ builder , $ id );
390392 }
391393
392394 return $ data ;
@@ -408,11 +410,11 @@ private function describeValue(mixed $value, bool $omitTags, bool $showArguments
408410 }
409411
410412 if ($ value instanceof ArgumentInterface) {
411- return $ this ->describeValue ($ value ->getValues (), $ omitTags , $ showArguments );
413+ return $ this ->describeValue ($ value ->getValues (), $ omitTags , $ showArguments, $ builder , $ id );
412414 }
413415
414416 if ($ value instanceof Definition) {
415- return $ this ->getContainerDefinitionData ($ value , $ omitTags , $ showArguments );
417+ return $ this ->getContainerDefinitionData ($ value , $ omitTags , $ showArguments, $ builder , $ id );
416418 }
417419
418420 return $ value ;
0 commit comments