php - 为什么我不能使用占位符从类中调用静态属性?

标签 php class

为什么我不能使用占位符从类中调用静态属性?

举例说明:

class Foo {
   public $obj_property = 'works';    
   public static $static_property = 'does not work';
}

/**this works*/
$foo = new Foo();
$obj_prop = 'obj_property';
echo $foo->$obj_prop;

/**this fails*/
$static_prop = '$static_property';
echo Foo::$static_prop;

返回的错误是Access to undeclared static property: Foo::$static_prop。 我知道它正在尝试寻找不存在的 $static_prop 。但它为什么要这样做?
它不应该寻找 $static_property - 因为那是 $static_prop 的值吗??

如果这个问题已经被问过,我很抱歉 - 找遍了但没找到。

(编辑:Related question found here 询问如何访问变量。我的问题更多的是问为什么而不是如何。但另一个问题肯定是相关且有帮助的。)

最佳答案

表达式 Foo::$static_prop 表示“在类 Foo 中定义的静态变量 static_prop

这个表达式有效:

$static_prop = 'static_property';
echo Foo::$$static_prop;

对于双美元表达式,首先 $static_prop 被评估为 'static_property',然后可以找到 Foo::$static_property

关于php - 为什么我不能使用占位符从类中调用静态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59598174/

相关文章:

PHP 计算日期格式已更改的 mysql 行

PHP:如何检测输入字符串是否为阿拉伯语

java - 在 Java 中为类创建默认泛型类型

swift - 为什么我的类变量不会更改为文本框的文本?

javascript - 使用 javascript 代码不是用于 id,而是用于类

java - 如何判断java类是否是匿名的?

php - 在非对象上调用成员函数 fetch_assoc()

php - pecl 安装 xdebug 版本错误

php - 使用 PHP 使用 .sql 文件构建数据库

java - 使用额外参数扩展类