我一直得到这个错误:
未定义变量:sampleRecord
当我在工作中处理这段代码时,我的多维数据集集群中没有人可以看到这个问题。
下面是构造函数: public function __construct(SamplesForm $samplesForm, SamplePartNumberForm
$samplePartNumberForm,sampleRepository $sampleRepository,
SamplePartNumberRepository
$samplePartNumberRepository, SamplePartNumberRecord
$samplePartNumberRecord, SampleRecord $sampleRecord)
{
$this->samplesForm = $samplesForm;
$this->samplePartNumberForm = $samplePartNumberForm;
$this->sampleRepository = $sampleRepository;
$this->samplePartNumberRepository = $samplePartNumberRepository;
$this->samplePartNumberRecord = $samplePartNumberRecord;
$this->sampleRecord = $sampleRecord;
}
下面是导致错误的代码块:
public function show($sample_id)
{
return View::make('samples.show')->with([
$sampleRecord->sampleRepository->find($sample_id),
$sampleRecord->getSamplePartNumberRecord,
]);
}
PHP类中的实例变量必须始终是限定的:
class Foo {
private $bar;
function baz () {
return $bar; // bad - undefined lexical variable
return $this->bar; // correct
}
}
因此,当您引用$sampleRecord
时,它试图使用未定义的词汇变量而不是您所指的$this->sampleRecord
,即实例变量。
啊,我想我看到你的困境了——实际上是两个:
第一个问题是$sampleRecord
不是本地的,因此应该参考实例属性,即$this->sampleRecord
。
第二个问题是,猜测$sampleRepository
不是$sampleRecord
的属性,因为它是当前类的属性。试试下面的命令:
public function show($sample_id)
{
return View::make('samples.show')->with([
$this->sampleRepository->find($sample_id),
$this->sampleRecord->getSamplePartNumberRecord,
]);
}
顺便说一句,构造函数有六个参数,一般认为太多了。这可能值得重构,作为一个单独的任务。