Por ejemplo: tengo una clase que tiene ClassA::create() ;
¿Cómo registrar esta fábrica en ContainerBuilder ?
$containerBuilder = new ContainerBuilder(); $containerBuilder ->register('access_manager', AccessManager::class) ->addArgument([new Reference('post_voter')]);Llamas a setFactory() .
P.ej:
$containerBuilder = new ContainerBuilder(); $containerBuilder ->register('access_manager', AccessManager::class) ->addArgument([new Reference('post_voter')]); $containerBuilder->register(ClassA::class) ->setClass(ClassA::class) ->setFactory([ClassA::class, 'create']); Si desea que la fábrica cree nuevas instancias del servicio cada vez que se accede a él, deberá agregar una llamada a setShared(false) .
Aquí puede ver un ejemplo en un sandbox en línea: https://phpsandbox.io/e/x/qhhxv
(Haga clic en "ejecutar" en la parte inferior derecha para verlo funcionar).