1

我正在尝试创建一个模型类(它将使用 DBAL),并且我想像我的捆绑包中的服务一样使用它。

我试图在我的包中创建一个具有此配置的服务:

services:
   X:
     class:        X
     arguments:   [@database_connection]

但事实是我不想在 app/config/config.yml 中配置此服务,因为它只会在一个包中使用。

有什么方法可以创建特定的捆绑服务,并将@database_connection 参数提供给类?还是我被迫为我的所有应用程序配置它?

我的目标只是为我的控制器和我的模型提供不同的类,而不使用 Doctrine ORM/Entity,只使用 DBAL。

4

1 回答 1

1

是的,每个包都有自己的配置文件。

# src/Acme/YourBundle/Resources/config/services.yml

services:
    X:
       class:        X
       arguments:   [@database_connection]

捆绑配置通过 DIC 加载。所以你的包中的这个文件很重要

// src/Acme/YourBundle/DependencyInjection/AcmeYourBundleExtension.php

namespace Acme\YourBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 */
class AcmeYourExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

通常,您应该在特定捆绑包中配置所有服务,services.yml而不是在config.yml. 所以你可以重复使用它们。但是该服务对于整个应用程序都是可见的,而不仅仅是捆绑包。但这应该没有问题。

于 2013-05-31T11:01:15.337 回答