@@ -201,6 +201,22 @@ public function completeStatement(Statement $statement, bool $currentServiceAllo
201201 }
202202 break ;
203203
204+ case $ entity === 'getProperty ' :
205+ if (count ($ arguments ) !== 2 ) {
206+ throw new ServiceCreationException (sprintf ('Function %s() expects 2 parameter, %s given. ' , $ entity , count ($ arguments )));
207+ }
208+
209+ break ;
210+
211+ case $ entity === 'constant ' :
212+ if (count ($ arguments ) !== 2 ) {
213+ throw new ServiceCreationException (sprintf ('Function %s() expects 2 parameter, %s given. ' , $ entity , count ($ arguments )));
214+ }
215+
216+ $ arguments [0 ] = $ this ->resolveReferenceType ($ arguments [0 ]);
217+ break ;
218+
219+
204220 case is_string ($ entity ): // create class
205221 if (!class_exists ($ entity )) {
206222 throw new ServiceCreationException (sprintf ("Class '%s' not found. " , $ entity ));
@@ -460,9 +476,9 @@ private function convertReferences(array $arguments): array
460476 if (!isset ($ pair [1 ])) { // @service
461477 $ val = new Reference ($ pair [0 ]);
462478 } elseif (preg_match ('#^[A-Z][a-zA-Z0-9_]*$#D ' , $ pair [1 ])) { // @service::CONSTANT
463- $ val = ContainerBuilder:: literal ( $ this -> resolveReferenceType ( new Reference ($ pair [0 ])) . ' :: ' . $ pair [1 ]);
479+ $ val = new Statement ( ' constant ' , [ new Reference ($ pair [0 ]), $ pair [1 ] ]);
464480 } else { // @service::property
465- $ val = new Statement ([new Reference ($ pair [0 ]), ' $ ' . $ pair [1 ]]);
481+ $ val = new Statement (' getProperty ' , [new Reference ($ pair [0 ]), $ pair [1 ]]);
466482 }
467483 } elseif (is_string ($ val ) && str_starts_with ($ val , '@@ ' )) { // escaped text @@
468484 $ val = substr ($ val , 1 );
0 commit comments