出于好奇,这更像是一个问题。我使用的是php 5.6安装,我有一个复杂的类,它依赖于几个laravel模型。
现在对象的正常流程为:
这一切都按顺序调用。
在beforeRender()中,laravel模型被分配给内部受保护变量以便快速访问。我有一个$this->getData()
的访问者,只有
protected function getData()
{
return $this->storedData;
}
在beforeRender();
中分配了$this->storedData
模型有一个方法getLore()
如果我在processStuff()中执行此操作,则尝试获取非对象属性时出错(null)
protected function processStuff() {
$lore = $this->getData()->getLore();
}
但如果我这样做
protected function processStuff() {
$data = $this->getData();
$lore = $data->getLore();
}
它可以顺利运行,当我之后将其更改回来时,它也可以毫无障碍地工作。
我确实使用opcache,这可能是opcache或php本身的某种优化/预测错误吗?或者它本身是什么东西,这可能是菊花链的麻烦,如试图处理多个核心上的多个语句,它成为竞争条件?
我只是好奇是什么让这种苛刻的链接条件有时会失败,但不是所有时间都会失败。
所有对象都会被初始化并分配。