PHP 5.6 вызов нескольких методов класса с именем класса в качестве переменной строки - PullRequest
0 голосов
/ 12 июня 2019

У меня есть имя класса в виде строковой переменной (на самом деле это красноречивое имя класса модели)

class Base_controller{
    public modelClassName = 'Product';
}

Я хотел бы вызвать методы этой модели с параметрами


class Base_controller{

    public modelClassName = 'Product';

    public function index(){

        $fields= 'id, name, price';

        $this->modelClassName::select($fields)->get();
    }
}

Когда я вызываю индексную функцию, я получаю сообщение об ошибке:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in ...

Как правильно это сделать?

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Вы также можете использовать call_user_func, если хотите.

public function index()
{
    $fields = 'id, name, price';
    call_user_func([$this->modelClassName, 'select'], $fields)->get();
}
1 голос
/ 12 июня 2019

Скопируйте значение свойства класса в обычную переменную, затем используйте синтаксис вызова функции переменной.

class Base_controller{

    public modelClassName = 'Product';

    public function index(){

        $fields= 'id, name, price';
        $class = $this->modelClassName;
        $class::select($fields)->get();
    }
}
...