【问题标题】:How to use lazy services with dependency injection in typo3?如何在typo3中使用带有依赖注入的惰性服务?
【发布时间】:2022-06-27 23:37:06
【问题描述】:

可以在typo3(版本11)中使用惰性服务吗?

我已经使用composer require symfony/proxy-manager-bridge 安装了包 symfony/proxy-manager-bridge。 documentation 说够了。

当我调试问题时,我发现ContainerBuilder::proxyInstantiator 为空并且从未调用过ContainerBuilder::setProxyInstantiator()。我觉得和here是一样的问题。

有没有办法在typo3中调用ContainerBuilder::setProxyInstantiator()

【问题讨论】:

  • 请尝试解释为什么您特别需要惰性服务。

标签: symfony dependency-injection typo3


【解决方案1】:

TYPO3 不像 Symfony 那样支持这种开箱即用的惰性服务集成。特别是您不能使用 Symfony 捆绑包,因为这些是专门为 Symfony 应用程序而设计的集成,类似于 TYPO3 中的扩展。

在 Symfony 中,Kernel::getContainerBuilder() method 负责注入代理实例化器。在这里,您可以看到 Symfony 特定的捆绑包是如何集成的,以防它存在/已安装。

因此,您可能需要尝试使用Configuration/Services.php 来实现类似的功能,它接收ContainerBuilder 实例作为参数。有关示例,请参见 Services.php of EXT:core

如果运行良好,您甚至可以考虑将其发布为 TYPO3 扩展包,以便其他人可以像在 Symfony 中一样通过简单的包安装来启动和运行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2021-04-09
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多