2016-07-30 9 views
3

奇妙な私の研究は、この正確なシナリオturned'upていません:。。PHP 5.6 * 7.0 VS *構文エラー、予期しない '::'(T_PAAMAYIM_NEKUDOTAYIM)

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

PHP 7. *は喜んでアクセス。(この場合は0.11)の特性が、5.6 *がエラーで転倒:

予期せぬ '::'(T_PAAMAYIM_NEKUDOTAYIM)

そして、はい、私が試したすべての$ {}順列::私は考えることができる。

+0

の両方で動作しますが、あなたが解決策を見つけるために起こりましたか。私もこれを扱っています。以下に例示するコードを示します: '<?php class MyClass { \t \t public static $ var = 'yay!'; \t public $ childClass; \t \tパブリック関数__construct(){ \t \t \t \tの$ this - > childClass =新しいChildClass()。 \t \t \t} \t } クラスChildClass { \t \tのpublic static $のVAR = 'イェーイ?'; \t } $ obj = new MyClass(); echo $ obj :: $ var; //作品 エコー$ obj-> childClass :: $ var; //構文エラー ?> ' – Dan

答えて

0

さて、ここで、少なくともあなたのニーズに通行することができる1つのソリューションです:

<?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(); 

?> 
3

PHP 5で動作しません。このような複合式の多くは通常、解決策を破ることがありますが、複数の式にそれ、そしてあなたはここでそれを行うことができます。

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

これは、PHP 5とPHP 7.

関連する問題