@@ -487,6 +487,12 @@ private function addServiceConfigurator($id, $definition, $variableName = 'insta
487
487
return sprintf (" %s->%s( \$%s); \n" , $ this ->dumpValue ($ callable [0 ]), $ callable [1 ], $ variableName );
488
488
}
489
489
490
+ $ class = $ this ->dumpValue ($ callable [0 ]);
491
+ // If the class is a string we can optimize call_user_func away
492
+ if (strpos ($ class , "' " ) === 0 ) {
493
+ return sprintf (" %s::%s( \$%s); \n" , substr ($ class , 1 , -1 ), $ callable [1 ], $ variableName );
494
+ }
495
+
490
496
return sprintf (" call_user_func(array(%s, '%s'), \$%s); \n" , $ this ->dumpValue ($ callable [0 ]), $ callable [1 ], $ variableName );
491
497
}
492
498
@@ -691,6 +697,13 @@ private function addNewInstance($id, Definition $definition, $return, $instantia
691
697
692
698
if (null !== $ definition ->getFactoryMethod ()) {
693
699
if (null !== $ definition ->getFactoryClass ()) {
700
+ $ class = $ this ->dumpValue ($ definition ->getFactoryClass ());
701
+
702
+ // If the class is a string we can optimize call_user_func away
703
+ if (strpos ($ class , "' " ) === 0 ) {
704
+ return sprintf (" $ return {$ instantiation }%s::%s(%s); \n" , substr ($ class , 1 , -1 ), $ definition ->getFactoryMethod (), $ arguments ? implode (', ' , $ arguments ) : '' );
705
+ }
706
+
694
707
return sprintf (" $ return {$ instantiation }call_user_func(array(%s, '%s')%s); \n" , $ this ->dumpValue ($ definition ->getFactoryClass ()), $ definition ->getFactoryMethod (), $ arguments ? ', ' .implode (', ' , $ arguments ) : '' );
695
708
}
696
709
0 commit comments