我的非操作/控制器类在捆绑包中的位置


Where do my non-action/controller classes go in a bundle?

我真的是Symfony 2的新手,来自CI,试图让我了解所有东西的正确位置。我有一个捆绑包,可以处理我所拥有的几个主页面类型,但这里有一个我在多个页面中使用的页面元素,每个页面可以有不同的配置。

解决这个问题的逻辑方法(就我所见)是在所有页面都可以使用的地方有一个单独的类。。。这是不允许用户访问的,所以我猜不应该进入控制器,但我应该把这个类放在哪里?

  1. 在我的捆绑包中制作一个"核心"类型的文件夹。是否有为此命名的最佳实践
  2. 它应该放在供应商文件夹中,还是只用于第三方捆绑包
  3. 制作另一个捆绑包以某种方式使用此代码。。。上一两节课似乎有点过头了
  4. 其他

我想您需要的是创建一个服务。您可以创建自己的类,该类具有自己的逻辑,并使用控制器中的服务容器检索它。以下示例可在Symfony Service Container Docs 上找到

$mailer = $this->get('my_mailer');
$mailer->send('ryan@foobar.net', ...);

要使该类可用,您必须将其添加到捆绑包的service.yml文件中,如下所示:

services:
    my_mailer:
        class:        "%my_mailer.class%"
        arguments:    ["%my_mailer.transport%"]

您可以通过参数向类中添加任何其他服务或参数

更多信息请点击此处:http://symfony.com/doc/current/book/service_container.html