Código rápido con la pregunta incluye:Variables estáticas de PHP en una clase principal abstracta: ¡la pregunta está en el código de muestra!
abstract class ClassParent {
public static $var1 = "ClassParent";
}
class ClassChild1 extends ClassParent{
public static function setvar1(){
ClassChild1::$var1 = "ClassChild1";
}
}
class ClassChild2 extends ClassParent{
public static function setvar1(){
ClassChild2::$var1 = "ClassChild2";
}
}
ClassChild1::setvar1();
echo ClassChild2::$var1;
// Returns "ClassChild1". Shouldn't this still be "ClassParent"?
Estoy suponiendo que el comportamiento que se espera arriba y no un error de PHP. En ese caso, ¿cómo podría declarar una variable estática en la clase principal que se manejará por separado para las clases secundarias? En otras palabras, quiero tener valores estáticos separados POR CLASE DE NIÑO. ¿Debo declarar la variable estática específicamente en las clases para niños o quizás haya otra manera?
Gracias!
Gracias por la respuesta. Estoy usando 5.3. Esto no debería ser diferente de lo que codifiqué anteriormente: simplemente expuse explícitamente el nombre de clase en lugar de usar 'estático'. Y de hecho, cambiarlos a estáticos produce el mismo resultado. – Aron
... lo único que parece funcionar es si declaro explícitamente la variable en la clase hija. Pero, si es posible, me gustaría evitar esta solución ... – Aron
Cuando publiqué mi respuesta, su fragmento de código no estaba completo. No creo que haya una solución limpia para esto. Actualicé mi respuesta con más información. – Lauren