Symfony:如何从bundle中创建服务

时间:2016-04-07 14:22:55

标签: symfony service

我已经创建了一个新的捆绑包,现在我想让它能够加载一些服务。 我怎么能这样做?

我在文档中找不到有用的信息......

谢谢...

2 个答案:

答案 0 :(得分:3)

src\MyApp\Bundle\AcmeBundle\DependencyInjection\MyAppAcmeExtension.php

<?php

namespace MyApp\Bundle\AcmeBundle\DependencyInjection;

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

class MyAppAcmeExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.xml');
    }
}

src/MyApp/Bundle/AcmeBundle/Resources/config/services.xml     

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services
                               http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="forum.post.voter" class="MyApp\Bundle\AcmeBundle\Service\ServiceClass">
            <argument type="service" id="security.context"/>
            <argument type="service" id="forum.repository.post_like"/>
        </service>
    </services>
</container>

就是这样。

答案 1 :(得分:0)

你能更明确吗?

在哪种情况下你需要打电话给某些服务吗?

如果您的服务在services.yml中声明,您可以在所有捆绑包中访问它们。唯一的要求是服务名称必须是唯一的。