不断得到“未定义变量”错误,当我试图执行我的代码


Keep getting "undefined variable" error when I try to excute my code

我一直得到这个错误:

未定义变量: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,
    ]);
}
顺便说一句,构造函数有六个参数,一般认为太多了。这可能值得重构,作为一个单独的任务。