Php Symfony:从控制器外部读取parameter.yml

Php Symfony:从控制器外部读取parameter.yml,php,symfony,Php,Symfony,我想从parameters.yml读取一个参数 解决方案是扩展控制器,但我遇到了以下错误: 错误:在null上调用成员函数getParameter() 我知道容器为空,但我不知道如何获取容器 类配置扩展控制器 { 公共函数构造() { $this->tempFolderPath=sys\u get\u temp\u dir(); $parameter=$this->container->getParameter('a'); } } 有什么解决方案吗?在扩展Controller的类中,调用$t

我想从parameters.yml读取一个参数

解决方案是扩展控制器,但我遇到了以下错误:

错误:在null上调用成员函数getParameter()
我知道容器为空,但我不知道如何获取容器

类配置扩展控制器
{
公共函数构造()
{
$this->tempFolderPath=sys\u get\u temp\u dir();
$parameter=$this->container->getParameter('a');
}
}

有什么解决方案吗?

在扩展
Controller
的类中,调用
$this->container->getParameter('a')
是可能的,因为
container
被注入到这些类中。当您在另一个类中时,您需要注入所需的参数

您的服务定义如下所示:

services:
    class: App\Your\FooClass
    arguments:
        - %a%
%
-注入参数是一种特殊字符

然后,您的类将如下所示:

class FooClass
{
    protected $a;

    public function __construct($a)
    {
        $this->a = $a;
        //you have your "a" parameter value injected into constructor
    }
}
这不是一个好的实践,但对我来说,这是唯一的解决方案,因为在我的代码中,我有一个实例化整个类的静态方法

解决办法是

public function __construct()
{
    $this->tempFolderPath = sys_get_temp_dir();
    global $kernel;
    $this->host = $kernel->getContainer()->getParameter('ws_host');
}

阅读此文档,您将找到您的答案谢谢您的快速帮助,但我在这个类中有一个实例化此类的静态方法:公共静态函数getDefaultConfiguration(){if(self::$defaultConfiguration==null){self:::$defaultConfiguration=new Configuration();}返回self::$defaultConfiguration;}这就是静态方法不好的原因:)我建议使用静态方法退出。如果没有,您将不得不手动解析您的
参数.yml
并尝试提取参数值,但这是一个非常不优雅的解决方案。不幸的是,我应该这样做,谢谢您的帮助!