Error de syntax en PHP 5.2

En php 5.3 puedo usar el nombre de la clase como variable y puedo llamar a la variable estática.

$class_name = 'Test'; $class_name::$static_var; 

Cómo llamarlo en la versión php 5.2?

 Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in ... 

T_PAAMAYIM_NEKUDOTAYIM es la resolución del scope de dos puntos que usa PHP – :: Puedes probar este $ class_name = ‘Test’; $ class_name -> $ static_var;

@ user762799 aquí está la solución para lo que quiere hacer en php 5.2

 class Sample{ public static $name; public function __construct(){ self::$name = "User 1"; } } $sample = new Sample(); $class = 'Sample'; $name = 'name'; $val_name = ""; $str = '$class::$$name'; eval("\$val_name = \"$str\";"); //echo $val_name."
"; eval("\$name = $val_name;"); echo $name;

PAAMAYIM_NEKUDOTAYIM significa operador de resolución de scope (:) 🙂 en su código PHP no puede identificar $static_var en el scope de $class_name es por eso que ocurrió el error.

Si aún no lo has aclarado, házmelo saber. Gracias 🙂

Deberías actualizar tu versión PHP, 5.2 ya no es compatible, pero …

… en PHP 5.2 la única forma de hackear esto es usar eval :

 $return = eval($class_name . '::\\$static_var;'); 

Pero asegúrese de validar $class_name antes de usar esto, de lo contrario se podría inyectar código arbitrario (por ejemplo, $class_name = 'do_bad_things(); Class_Name ).