Vamos a empezar con algo de código:¿Por qué el enlace estático no funciona con las variables en PHP 5.3?
class Super {
protected static $color;
public static function setColor($color){
self::$color = $color;
}
public static function getColor() {
return self::$color;
}
}
class ChildA extends Super { }
class ChildB extends Super { }
ChildA::setColor('red');
ChildB::setColor('green');
echo ChildA::getColor();
echo ChildB::getColor();
Ahora, la ligadura dinámica en PHP 5.3 utilizando la estática palabra clave static funciona muy bien con los métodos estáticos, por lo que supuso que haría la misma magia en las variables estáticas. Bueno, parece que no. El ejemplo anterior no imprime "rojo" y luego "verde" como esperaba, sino "verde" y "verde". ¿Por qué esto no funciona en variables cuando funciona en métodos? ¿Hay alguna otra forma de lograr el efecto que esperaba?
Muchas gracias, Lekensteyn. Eso arruina un poco la comodidad de la herencia un poco, pero lo haré :) –
Gracias esto realmente ayudó. Caí en la misma trampa; ¡Me faltaba redefinir la variable en las clases para niños! ¿Tiene alguna literatura sobre esto, ya que parecía perder esta pieza vital en los documentos de PHP. – Meberem