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

时间:2016-07-30 01:15:00

标签: php-7

奇怪的是,我的研究并没有改变这种确切的情况:

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

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

意外'::'(T_PAAMAYIM_NEKUDOTAYIM)

是的,我已经尝试了每一个$ {permutation} ::我能想到的。

2 个答案:

答案 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();

?>