gpt4 book ai didi

php通过变量类名访问静态成员

转载 作者:可可西里 更新时间:2023-11-01 00:36:36 24 4
gpt4 key购买 nike

现在我正在使用 yii 框架,我想写这样的东西:

protected static $model = "Customer";
...
public function actionIndex() {
$model::model()->find(...

现在可以了:

protected static $model = "Customer";
protected static $model_obj;
...
public function __construct($controller, $id) {
$this->model_obj = new self::$model;
...
public function actionIndex() {
$model_obj::model()->find(...

但是为访问静态成员创建对象是一件坏事。如何避免?

getClass 以对象作为第一个参数,它不适合这个目的

谷歌说:

$a = constant($myClassName . "::CONSTANT");
$b = call_user_func(array($myClassName, "static_method"));

这看起来像一个可怕的狗屎和平。使用它可能会带来很多麻烦。另一个解决方案?

哦!我的问题是另一个:

$controller::$NAME::model() // error

$controller_name = $controller::$NAME
$controller_name::model() // good

谢谢

最佳答案

class foo
{
public static function bar()
{
return 42;
}
}

// class name as string

$class = 'foo';

var_dump($class::bar()); // 42

// method name as string

$method = 'bar';

var_dump(foo::$method()); // 42

// class AND method names as strings

var_dump($class::$method()); // 42

关于php通过变量类名访问静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com