我只想知道做这件事的最佳实践/方法是什么。我将用一个例子来解释,使它更容易理解。
注意:到目前为止,如果我的应用程序中只有一个捆绑包,下面的示例可以正常工作。问题在帖子的底部。
提前感谢
SingleBundle/Resources/config/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;
}
}
问题:如果我的应用程序中有多个捆绑包,如何避免复制这两个文件?我在哪里定义服务以及可以从所有捆绑包访问的服务类?
您必须在实现此服务逻辑的捆绑包中定义您的服务。如果您有bundle SingleBundle,调用服务的最佳方式是使用特殊前缀(在您的情况下为single_bundle.form_errors)。如果您有两个或多个bundle,则不必重复服务定义和服务类声明,因为在一个bundle的命名空间中定义的所有服务(已正确加载到项目中)都可以在另一个bundel的命名空间中访问(也已正确加载至项目中)。
所以,我认为在创建服务之前,您只需要思考应该在哪里定义它。如果您对可能的重复有任何疑问,请注意服务名称。