我正在尝试从容器中获取一些服务:
class MyController extends Controller
{
private $service;
public function __construct() {
$this->service = $this->container->get("service");
}
}
但容器为null并抛出异常:
Error: Call to a member function get() on null
我怎样才能使它有效? ps:我不想让我的控制器成为一项服务。
答案 0 :(得分:3)
修改强>
您无法从构造函数访问服务容器,因为尚未调用方法setContainer
。
在控制器的另一种方法中调用它,它可以正常工作。
答案 1 :(得分:2)
延伸接受的答案。
实例化服务类时,首先调用构造函数。然后,内核/服务容器检查对象是否是ContainerAware
的实例,然后调用方法setContainer
。 $container
参数在构造函数中不可用。
如果要进行一次初始化(如构造函数),请覆盖方法setContainer
并在那里进行容器特定的初始化。