Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问常规类内的服务_Php_Symfony_Localization_Twig - Fatal编程技术网

Php 访问常规类内的服务

Php 访问常规类内的服务,php,symfony,localization,twig,Php,Symfony,Localization,Twig,我在我的Symfony2项目中有一个常规课程: class RangeColumn extends Column{ //... } 现在,在这个类中有一个render函数,在这个函数中,我想使用Twig或Symfony2的翻译服务来呈现特定的模板。如何以正确的方式访问此服务?使用。这是一个非常简单的概念 您只需向类传递(注入)所需的服务 如果依赖项是必需的则在构造函数中传递它们。如果它们是可选的则使用设置器 您可以更进一步,将类的构造委托给依赖项注入容器(从中生

我在我的Symfony2项目中有一个常规课程:

    class RangeColumn extends Column{
        //...
    }
现在,在这个类中有一个render函数,在这个函数中,我想使用Twig或Symfony2的翻译服务来呈现特定的模板。如何以正确的方式访问此服务?

使用。这是一个非常简单的概念

您只需向类传递(注入)所需的服务

如果依赖项是必需的则在构造函数中传递它们。如果它们是可选的则使用设置器

您可以更进一步,将类的构造委托给依赖项注入容器(从中生成服务)

服务与你的“常规”课程没有什么不同。只是它们的构造被委托给了容器

代码示例:

<?php

class MyRegularClass
{
    private $translator;

    public function __construct(Translator $translator)
    {
        $this->translator = $translator;
    }

    public function myFunction()
    {
        $this->translator->trans('sentence_to_translate');
    }
}

有关更多详细信息,请参阅关于Symfony2的章节

依赖项注入标记是
@translator。默认情况下,
@translator
标记是指现在登录translator。
parameters:
    my_regular_class.class: Vendor\MyBundle\Classes\MyRegularClass

services:
    mybundle.classes.my_regular_class:
        class: %my_regular_class.class%
        arguments: [@translator]