2015-05-26 2 views
0

У меня есть модель, расширенная от Model, ее имя - IcerikRltCategory, и я хочу использовать функцию getTable со статично. Но функция __callStatic ничего не срабатывает. Потому что не ввел эту магическую область действия.Laravel 5 - Функция __callStatic работает правильно?

сообщение об ошибке:

1/1 ErrorException в ContentController.php линии 51: Non-статический метод Осветите \ Database \ Eloquent \ Model :: GetTable() не должен быть вызван статически, полагая, $ это из несовместимого контекста

ответ

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 
+0

Спасибо за ответ я не думаю, что ввести функцию. Я понимаю, и внутри функции getTable() должна работать статическая переменная. – Mesuti

Смежные вопросы