Php Symfony:从控制器外部读取parameter.yml
我想从parameters.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
错误:在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
并尝试提取参数值,但这是一个非常不优雅的解决方案。不幸的是,我应该这样做,谢谢您的帮助!