我正在尝试从类中调用具有可变名称的静态函数。


期望的结果:

&#xA ; 类Controller扩展Controller {
 public $ model ='ModelName';
公共职能指数(){
 $ woot = $ this-> model :: find('');
后续代码var_dump($活泉);
 }
}



 这有效:


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



 这也有效:


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



 我正在尝试在当前类中定义新的类名,并从当前模型中调用find作为静态函数。
任何想法如何在没有创建新对象的情况下,可以使用 __ set
,或在函数中声明局部变量吗?
答案 0 :(得分:2)
你实际上不能这样做。在类实例中,您不能使用$this->var
来引用另一个类。但是,您可以将其分配给另一个本地变量并进行该工作
public function index() {
$var = $this->model;
$woot = $var::find('');
var_dump($woot);
}
答案 1 :(得分:1)
我会使用 Machavity 的方法,但您可以使用call_user_func()
或call_user_func_array()
:
public function index() {
$woot = call_user_func_array(array($this->model, 'find'), array(''));
}