我想从parameters.yml读取一个pareameter。 解决方案是扩展Controller,但我收到了这个错误:
Error: Call to a member function getParameter() on null
我知道容器是null,但我不知道如何获取容器?
class Configuration extends Controller
{
public function __construct()
{
$this->tempFolderPath = sys_get_temp_dir();
$parameter = $this->container->getParameter('a');
}
}
任何解决方案?有什么帮助吗?
答案 0 :(得分:6)
由于Controller
被注入此类,因此可以扩展$this->container->getParameter('a')
调用Container
的类。当你在其他班级时,你需要通过defining your class as a service注入你想要的参数。
您的服务定义如下所示:
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
}
}
答案 1 :(得分:1)
不是最佳做法 ,但对我来说这是唯一解决方案 :(因为在我的代码中我有一个静态方法实例化孔类。 所以解决方案就是。
public function __construct()
{
$this->tempFolderPath = sys_get_temp_dir();
global $kernel;
$this->host = $kernel->getContainer()->getParameter('ws_host');
}