He estado luchando en esta área desde hace días, y he llegado a una conclusión, pero como la conclusión no era lo que estaba buscando, antes de darme por vencido, intentaré ver qué otras personas dicen La fe muere la última ...Extendiendo clases estáticas PHP
Digamos que tenemos una superclase (llamada "Super") y una subclase (llamada "Sub").
class Super {
protected static $title = 'super';
public static function get_class_name()
{
echo __CLASS__;
}
public static function get_title()
{
echo self::$title;
}
}
class Sub extends Super {
protected static $title = 'sub';
}
Ahora, es probable que esperar ya que se extiende Sub Súper, que ahora sería Sub heredar todos los métodos de Súper, sin embargo, parece ser sólo para recibir referencias a los métodos de la Sub.
Digo esto porque si llamo:
Sub::get_class_name();
la salida es "Super", y no "Sub".
Y si llamo:
Sub::get_title();
de nuevo, la salida es "super", e incluso tengo el título $ declarada en Sub.
Esto significa que cuando invoco una función estática heredada, el alcance de la función será la superclase, no la que se invoca (incluso si imprime la traza inversa, ¡mostrará que la llamada se realizó en la superclase! !!), y para obtener el alcance como la subclase sobre la que se realiza la llamada, necesito redeclarar ese método dentro de esa subclase. Bueno, este tipo de derrotas el propósito de extender las clases, ¿no?
Así que mi pregunta es, ¿puedo alguna vez extender una clase estática, llamar a uno de los métodos heredados y tener el alcance de la subclase? o al menos para poder identificar su nombre de clase? Y si no, ¿por qué querría extender las clases estáticas?
Gracias!
Bien, ahora lo entiendo. – treznik