¿obtendré los mismos resultados?
Realmente no. Sin embargo, no conozco una solución alternativa para PHP 5.2.
¿Cuál es la diferencia entre new selfy new static?
selfse refiere a la misma clase en la que la newpalabra clave se escribe realmente.
static, en los enlaces estáticos tardíos de PHP 5.3, se refiere a cualquier clase en la jerarquía en la que invocó el método.
En el siguiente ejemplo, Bhereda ambos métodos de A. La selfinvocación está vinculada Aporque se define en Ala implementación del primer método, mientras que staticestá vinculada a la clase llamada (también ver get_called_class()).
class A {
public static function get_self() {
return new self();
}
public static function get_static() {
return new static();
}
}
class B extends A {}
echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A