从yml获取参数的服务

时间:2018-10-23 07:50:23

标签: php symfony service

我在symfony中从yml文件获取参数的服务有问题。现在我的服务看起来非常简单。

class MyService extends Controller
{
    /**
     * @var string
     */
    private $keys;

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

    public function getKeys()
    {
        return $this->keys;
    }

}

在Controller方法中:

 public function exampleAction()
    {
        $keys = new MyService('keys');
        return var_dump($this->getParameter($keys->getKeys()));

    }

但是当我尝试在服务中添加getParameter函数时(请看本文下方的代码),它不起作用。 服务:

class MyService extends Controller
{
    /**
     * @var string
     */
    private $keys;

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

    public function getKeys()
    {
        return $this->getParameter($this->keys);
    }

}

和控制器:

public function exampleAction()
    {
        $keys = new MyService('keys');
         return var_dump($keys->getKeys());

    }

有人可以告诉我怎么了? 谢谢:)

2 个答案:

答案 0 :(得分:1)

我不知道您的参数结构,但是您可以以此为例。如果您想访问

  

您的密钥

parameters:
    key:
        yourKey: bar
        bar: baz

$params = $this->getParameter('bar');
$yourKey = $params['yourKey'];

您可以在The Yaml Component

了解有关YAML的更多信息

答案 1 :(得分:0)

即使您提到这是一项服务,它实际上也是controller。 (因为您的服务扩展了controller)。我认为这不是最好的方法。

但是,由于您在controller中并且没有提到任何DI,因此您可以这样做。

public function __construct(Symfony\Component\DependencyInjection\Container $container)
{
    $this->container = $container;
}

public function getKeys()
{
    return $this->container->getParameter('keys');
}

请注意

但是,如果您使用的是DI。不要注入整个container,因为它有很多性能缺陷。仅传递必需的参数。

谢谢。