PHP 5.6。* vs 7.0。*语法错误,意外出现'::'(T_PAAMAYIM_NEKUDOTAYIM)

CNS*_*ght 4 php-7

奇怪的是,我的研究并未提出以下确切方案:

$someVar = $this->StaticClassName::$staticClassProperty;

php 7. *愉快地访问该属性,但5.6。*(在这种情况下为.11)因错误而掉线:

意外的'::'(T_PAAMAYIM_NEKUDOTAYIM)

是的,我尝试过每一个$ {permutation} ::我都能想到。

And*_*rea 5

有很多这样的复合表达式在PHP 5中不起作用。通常的解决方案是将其分解为多个表达式,您可以在此处进行操作:

$className = $this->StaticClassName;
$someVar = $className::$staticClassProperty;
Run Code Online (Sandbox Code Playgroud)

这对PHP 5和PHP 7均适用。


Dan*_*Dan 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();

?>
Run Code Online (Sandbox Code Playgroud)