【问题标题】:PHP - Using a Double colon with a class variblePHP - 使用带有类变量的双冒号
【发布时间】:2015-08-18 02:14:16
【问题描述】:

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

期望的结果:

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 或在函数中声明局部变量的情况下实现?

【问题讨论】:

    标签: php class static scope-resolution


    【解决方案1】:

    我会采用 Machavity 的方法,但你可以使用 call_user_func() 或 call_user_func_array():

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 2012-05-17
        • 2021-04-25
        • 1970-01-01
        相关资源
        最近更新 更多