如何从 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
(单击右下角的“运行”以查看它是否正常工作)。
例如:我有一个 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
(单击右下角的“运行”以查看它是否正常工作)。