Laravel 5 - __callStatic功能是否正常工作?

时间:2015-05-26 15:32:32

标签: php laravel eloquent laravel-5

我有一个从Model扩展的模型,它的名字是IcerikRltCategory,我想静态使用getTable函数。但__callStatic函数不会触发任何内容。因为没有进入这个神奇的功能范围。

错误信息是:

  

1/1   ContentController.php第51行中的ErrorException:   非静态方法Illuminate \ Database \ Eloquent \ Model :: getTable()不应该静态调用,假设$ this来自不兼容的上下文

1 个答案:

答案 0 :(得分:0)

getTable方法需要模型对象的实例才能工作。该方法本身如下:

public function getTable()
{
    if (isset($this->table)) return $this->table;

    return str_replace('\\', '', snake_case(str_plural(class_basename($this))));
}

正如您所看到的,它使用$this来访问属性,这意味着在对象实例给出的需求上下文中。因此静态调用该方法不会起作用:

IcerikRltCategory::getTable(); // this won't work

但是当你有一个实例时,它会:

$model = new IcerikRltCategory();
$model->getTable(); // this will work