0

我正在尝试使用类中的变量名称调用静态函数。

期望的结果:

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在不创建新对象、使用或在函数中声明局部变量的情况下,有什么想法吗?

4

2 回答 2

2

你实际上不能那样做。在一个类实例中,您不能使用它$this->var来引用另一个类。但是,您可以将其分配给另一个局部变量并进行该工作

public function index() {
    $var = $this->model;
    $woot = $var::find('');
    var_dump($woot);
}
于 2015-06-03T18:08:18.770 回答
1

我会使用Machavity的方法,但您可以使用call_user_func()or call_user_func_array()

public function index() {
    $woot = call_user_func_array(array($this->model, 'find'), array(''));
}
于 2015-06-03T18:17:05.997 回答