Использование двойного двоеточия с переменным класса

Я пытаюсь вызвать статическую функцию с переменным именем из класса.

Желаемый результат:

class Controller extends Controller {
public $model = 'ModelName';
public function index() {
$woot = $this->model::find('');
var_dump($woot);
}
}

Это работает:

$class = 'ClassName';
$object = $class::find($parameters);

Это тоже работает:

$class = new Model();
$object = $class::find($params);

Я пытаюсь определить новое имя класса внутри текущего класса и вызвать find как статическую функцию из текущей модели.
Любые идеи, как это возможно, без создания нового объекта, используя __setили объявление локальной функции в функции?

0

Решение

Вы не можете сделать это на самом деле. В экземпляре класса вы не можете использовать $this->var ссылаться на другой класс. Вы можете, однако, присвоить его другой локальной переменной и получить эту работу

public function index() {
$var = $this->model;
$woot = $var::find('');
var_dump($woot);
}
2

Другие решения

Я бы пошел с Machavityметод, но вы можете использовать call_user_func() или же call_user_func_array():

public function index() {
$woot = call_user_func_array(array($this->model, 'find'), array(''));
}
1

По вопросам рекламы [email protected]