如何从 Class 工厂方法添加 Symfony 依赖注入容器生成器的定义?

How to add Definiton of Symfony Dependency injection container builder from Class factory method?

例如:我有一个 class 其中有 ClassA::create();

如何在ContainerBuilder注册这个工厂?

$containerBuilder = new ContainerBuilder();

$containerBuilder
    ->register('access_manager', AccessManager::class)
    ->addArgument([new Reference('post_voter')]);

你打电话给setFactory().

例如:

$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']);

如果您希望工厂在每次访问服务时创建新的服务实例,您需要添加对 setShared(false) 的调用。

您可以在此处查看在线沙箱中的示例: https://phpsandbox.io/e/x/qhhxv

(单击右下角的“运行”以查看它是否正常工作)。