PHP - 使用带有 class 变量的双冒号
PHP - Using a Double colon with a class varible
我正在尝试使用 class 中的变量名称调用静态函数。
期望的结果:
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);
我正在尝试在当前 class 中定义新的 class 名称,并从当前模型中将查找作为静态函数调用。
在不创建新对象、使用 __set
或在函数中声明局部变量的情况下,有什么想法吗?
实际上你不能那样做。在 class 实例中,您不能使用 $this->var
引用另一个 class。但是,您可以将它分配给另一个局部变量并让它起作用
public function index() {
$var = $this->model;
$woot = $var::find('');
var_dump($woot);
}
我会使用 Machavity 的方法,但您可以使用 call_user_func()
或 call_user_func_array()
:
public function index() {
$woot = call_user_func_array(array($this->model, 'find'), array(''));
}
我正在尝试使用 class 中的变量名称调用静态函数。
期望的结果:
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);
我正在尝试在当前 class 中定义新的 class 名称,并从当前模型中将查找作为静态函数调用。
在不创建新对象、使用 __set
或在函数中声明局部变量的情况下,有什么想法吗?
实际上你不能那样做。在 class 实例中,您不能使用 $this->var
引用另一个 class。但是,您可以将它分配给另一个局部变量并让它起作用
public function index() {
$var = $this->model;
$woot = $var::find('');
var_dump($woot);
}
我会使用 Machavity 的方法,但您可以使用 call_user_func()
或 call_user_func_array()
:
public function index() {
$woot = call_user_func_array(array($this->model, 'find'), array(''));
}