PHP - 使用带有类变量的双冒号

时间:2015-06-03 17:58:51

标签: php class static scope-resolution

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





期望的结果:


&#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 ,或在函数中声明局部变量吗?




2 个答案:

答案 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(''));
}