为什么我不能使用占位符从类中调用静态属性?
举例说明:
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/