当我尝试执行代码时,继续收到“未定义的变量”错误

时间:2014-08-21 19:28:20

标签: php forms laravel eloquent models

我一直收到这个错误:

  

未定义的变量: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,
    ]);
}

2 个答案:

答案 0 :(得分:2)

PHP类中的实例变量必须始终合格:

class Foo {
    private $bar;

    function baz () {
        return $bar;       // bad - undefined lexical variable
        return $this->bar; // correct
    }
}

因此,当你引用$sampleRecord它试图使用未定义的词汇变量而不是你的意思$this->sampleRecord时,实例变量。

答案 1 :(得分:0)

啊,我想我看到你所处的泡菜 - 实际上是两个:

第一个问题是$sampleRecord不是本地的,因此应该引用实例属性,即$this->sampleRecord

第二个问题是,猜测时,$sampleRepository不是$sampleRecord上的属性,因为它是当前类的属性。请尝试以下方法:

public function show($sample_id)
{
    return View::make('samples.show')->with([
        $this->sampleRepository->find($sample_id),
        $this->sampleRecord->getSamplePartNumberRecord,
    ]);
}

顺便说一下,你的构造函数有六个参数,通常被认为太多了。作为一项单独的任务,重建这个可能是值得的。