php 在TYPO3 12.4.6中不应该像Singleton一样运行的接口?

ar5n3qh5  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(118)

我有一个扩展MyServiceInterface的服务MyService。在Services.yaml中,我配置:

My\Extension\Domain\Interface\MyServiceInterface:
  alias: My\Extension\Service\MyService
  public: true

当我想使用该服务时,我使用GeneralUtility::makeInstance(MyServiceInterface::class)
MyServiceInterface没有扩展SingletonInterface,所以它不应该是单例的,对吗?
因为当我用GeneralUtility::makeInstance()获取服务时,它具有我上次在同一调用中使用它时的值,并且没有像我期望的那样创建新对象。
如果我跳过接口步骤,则不会发生此问题,因此当我从Services.yaml中删除配置并使用GeneralUtility::makeInstance(MyService::class)获取时。
这是一个问题,还是我错过了什么?

webghufk

webghufk1#

您可以在Services.yaml文件中设置shared: false。但是你不能在接口上使用别名定义,而是在真实的的类本身上。

My\Extension\Service\MyService:
  shared: false

My\Extension\Domain\Interface\MyServiceInterface:
  alias: My\Extension\Service\MyService
  public: true

这样,服务就不再共享了。

相关问题