Child类中不存在PHP错误方法,method_exists($ child,$ method)传递

时间:2016-09-12 22:29:56

标签: php laravel-5

在这里使用Laravel 5.1。 我创建了两个类,一个扩展另一个类:

abstract class ActivityTimeline extends Model

其中:

$this->fields = [
   'owner_id',
   'contact_name',
   'mailing_label',
   'source_id',
   'source_raw',
   'initial_referer_raw',
   'primary_person',
   'connections',
];
foreach ($this->fields as $field) {
    if (method_exists($this, $field)) {
        dd('the method exists', $this, $field);
        $timelineActivity[$field] = $this->{$field}();
    }
}

class ContactActivity extends ActivityTimeline {

其中:

public function primary_person()
{
    return $this->getPrimaryPerson($this->record);
}

“dd('方法存在',$ this,$ field);”返回以下内容:

  

“方法存在”

     

ContactActivity {#963▶}

     

“primary_person”

然而,当这个if语句通过,并且我尝试调用我刚检查过的方法时,我得到:

  

Builder.php第2123行中的BadMethodCallException:   调用未定义的方法Illuminate \ Database \ Query \ Builder :: primary_person()

所以我似乎没有在这里使用ContactActivity对象,即使dd显示我是。任何人都知道我在这里做错了什么来得到错误的对象?

1 个答案:

答案 0 :(得分:0)

我认为这是因为你从父类调用了一个子方法。 尝试添加

abstract function primary_person();

在ActivityTimeline类