首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Services.xml中将工厂类和工厂方法转换为工厂

在Services.xml中将工厂类和工厂方法转换为工厂
EN

Stack Overflow用户
提问于 2016-01-19 16:10:01
回答 3查看 1K关注 0票数 1

我使用的是Symfony3和注意到,即factory-classfactory-method不再存在,但factory确实存在。

这是相当令人沮丧的,因为我想使用pulse00 00/ffmpeg-bundle,但services.xml似乎是前3.0。

如您所见,4个红色标记属性是问题所在:

代码语言:javascript
复制
factory-class="%dubture_ffmpeg.ffmpeg.class%" factory-method="create"
factory-class="%dubture_ffmpeg.ffprobe.class%" factory-method="create"

示例(Symfony3版本):

代码语言:javascript
复制
services:
    newsletter_manager:
        class:   NewsletterManager
        factory: [NewsletterManagerFactory, createNewsletterManager]

问题:

如何更新services.xml以使其与Symfony3正确工作?

我尝试过的:

我尝试将两者结合在一起,但没有成功,而是使用了factory。但显而易见的“工厂”也是不允许的。

错误:

代码语言:javascript
复制
$ php bin/console server:run 

我所犯的错误:

属性“工厂类”是不允许的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-19 16:28:09

包的缺点,特别是当前从2到3的切换,是依赖于它们的维护人员来更新代码以支持新版本。

修复此问题的正常过程:

  • 分叉存储库
  • 在services.xml中应用修复程序
  • 提交拉请求
  • 等待维护人员将其合并。

如果维护人员没有响应您的拉请求,或者您现在真的需要它。您可以在composer.json存储库列表中添加到叉的链接。https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository

然后,它将安装您的分叉版本,其中包含修复。

票数 4
EN

Stack Overflow用户

发布于 2016-01-19 16:32:59

因为factory-classfactory-method在Symfony中被否决了,

你必须使用:

XML:

代码语言:javascript
复制
<services>
    <service id="dubture_ffmpeg.ffmpeg" class="NewsletterManager">
        <factory class="%dubture_ffmpeg.ffmpeg.class%" method="create" />
    </service>
</services>

或YAML:

代码语言:javascript
复制
services:
    dubture_ffmpeg.ffmpeg:
        class:   NewsletterManager
        factory: [%dubture_ffmpeg.ffmpeg.class%, create]

第一个参数表示class属性,第二个参数表示method属性。

请参阅注入/factories.html

票数 3
EN

Stack Overflow用户

发布于 2016-01-19 16:22:54

我添加了<factory></factory>元素,并在其中定义了属性类和方法。目前,我已经能够顺利地运行服务器了。

代码语言:javascript
复制
<service id="dubture_ffmpeg.ffmpeg" class="%dubture_ffmpeg.ffmpeg.class%" lazy="true">
    <factory class="%dubture_ffmpeg.ffmpeg.class%" method="create"></factory>
    <argument type="collection">
        <argument key="ffmpeg.binaries">%dubture_ffmpeg.binary%</argument>
        <argument key="ffprobe.binaries">%dubture_ffprobe.binary%</argument>
        <argument key="timeout">%dubture_ffmpeg.binary_timeout%</argument>
        <argument key="ffmpeg.threads">%dubture_ffmpeg.threads_count%</argument>
    </argument>
    <argument id="logger" type="service"/>
</service>

<service id="dubture_ffmpeg.ffprobe" class="%dubture_ffmpeg.ffprobe.class%" lazy="true">
    <factory class="%dubture_ffmpeg.ffprobe.class%" method="create"></factory>
    <argument type="collection">
        <argument key="ffmpeg.binaries">%dubture_ffmpeg.binary%</argument>
        <argument key="ffprobe.binaries">%dubture_ffprobe.binary%</argument>
    </argument>
    <argument id="logger" type="service"/>
</service>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34881570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档