2016-07-30 11 views
3

Seltsam meine Forschung genau dieses Szenario nicht turned'up hat:..PHP 5.6 * vs 7.0 * Syntaxfehler, unerwartete '::' (T_PAAMAYIM_NEKUDOTAYIM)

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

php 7. * glücklich greift die . Immobilie sondern lediglich 5.6 * (.11 in diesem Fall) fällt mit dem Fehler über:

unerwartete '::' (T_PAAMAYIM_NEKUDOTAYIM)

Und ja, ich habe alle $ {} Permutation versucht :: Ich könnte mir vorstellen.

+0

Haben Sie eine Lösung finden, zufällig? Ich beschäftige mich auch damit. Hier ist ein Code zu veranschaulichen: ' Child = new Child(); \t \t \t} \t } Klasse Child { \t \t public static $ var = 'yay?'; \t } $ obj = neu MyClass(); echo $ obj :: $ var; // funktioniert echo $ obj-> childClass :: $ var; // Syntaxfehler ?> ' – Dan

Antwort

0

Nun, hier zumindest ist eine Lösung, die für Ihre Bedürfnisse passierbar sein kann:

<?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

Es gibt eine Menge von Verbindung Ausdrücke wie diese, die in PHP nicht funktionieren 5. Normalerweise ist die Lösung zu brechen es in mehrere Ausdrücke, und Sie können das hier tun:

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

Diese beiden funktioniert auf PHP 5 und PHP 7.

Verwandte Themen