2011-01-12 18 views
11
class Employee 
{ 
    public static $favSport = "Football"; 

    public static function watchTV() 
    { 
     echo "Watching ".static::$favSport; 
    } 
} 

class Executive extends Employee 
{ 
    public static $favSport = "Polo"; 
} 

echo Executive::watchTV(); 

Parse error: syntax error, unexpected T_STATIC on line 7Error de análisis: error de sintaxis, T_STATIC inesperada

¿Por qué obtengo error de análisis & y cómo solucionarlo? ¡Gracias!

+0

¿Cuál es el retorno de phpversion()? – powtac

Respuesta

26

El error de análisis aquí:

echo "Watching ".static::$favSport; 

es porque late static bindings fueron introducidos en la versión 5.3 de PHP. Su versión de php (< 5.3) no reconoce static::$favSport.

no hay ninguna manera de que pueda pensar para fijarlo para PHP mayores de 5,3, que no sea con la herencia de objetos (que no es realmente una solución per se, ya que no tiene nada que ver con static) ...

+0

Ah, punto justo. +1 –

+0

@Pekka: PHP 4 se ahogaría con la palabra clave 'public' :) – BoltClock

+0

Ok gracias - eso es correcto :) – easyrider