奇怪的是,我的研究并没有改变这种确切的情况:
$someVar = $this->StaticClassName::$staticClassProperty;
php 7. *愉快地访问该属性,但5.6。*(在这种情况下为.11)会出现错误:
意外'::'(T_PAAMAYIM_NEKUDOTAYIM)
是的,我已经尝试了每一个$ {permutation} ::我能想到的。
答案 0 :(得分:5)
有许多像这样的复合表达式在PHP 5中不起作用。通常解决方案是将其分解为多个表达式,你可以在这里做到:
$className = $this->StaticClassName;
$someVar = $className::$staticClassProperty;
这适用于PHP 5和PHP 7。
答案 1 :(得分:0)
嗯,至少这是一个可以满足您需求的解决方案:
<?php
class MyClass {
public $childClass;
public function __construct() {
$this->childClass = new ChildClass();
}
}
class ChildClass {
public static $foo = 'bar';
public function getFoo() {
return static::$foo;
}
}
$obj = new MyClass();
echo $obj->childClass->getFoo();
?>