如果应用程序中有多个包,请避免重复文件和服务

时间:2014-09-19 09:28:11

标签: php symfony

我只是想知道这样做的最佳做法/方法是什么。我将用一个例子来解释,以便更容易理解。

注意:到目前为止,如果我的应用程序中只有一个捆绑包,下面的示例工作正常。问题在帖子的底部。

提前致谢

SingleBundle /资源/配置/ services.yml

services:
    form_errors:
        class:  Hello\SingleBundle\Services\FormErrors

FormErrors.php

namespace Hello\SingleBundle\Services;

use Symfony\Component\Form\FormInterface;

class FormErrors
{
    public function getErrors(FormInterface $form)
    {
        .......
        .......
        return $errors;
    }
}

问题: 如果我的应用程序中有多个捆绑包,如何避免重复这两个文件?我在哪里定义服务以及可以从所有捆绑包中访问的服务类?

1 个答案:

答案 0 :(得分:1)

您必须在捆绑中定义服务,以实现此服务的逻辑。如果您有捆绑SingleBundle,则调用该服务的最佳方法是使用特殊前缀(在您的情况下为single_bundle.form_errors)。 如果你有两个或更多的bundle,就没有必要复制服务定义和服务类声明,因为在一个bundle的命名空间中定义的所有服务(正确加载到项目中)都可以在另一个bundle的命名空间中访问(这是正确的也加载到项目中。)

所以,我认为在创建服务之前,您只需要考虑应该在哪里定义。如果您对可能的重复有任何疑问,请注意服务名称。