我在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());
}
有人可以告诉我怎么了? 谢谢:)
答案 0 :(得分:1)
我不知道您的参数结构,但是您可以以此为例。如果您想访问
您的密钥
。
parameters:
key:
yourKey: bar
bar: baz
$params = $this->getParameter('bar');
$yourKey = $params['yourKey'];
了解有关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
,因为它有很多性能缺陷。仅传递必需的参数。
谢谢。