¿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 self
y new static
?
self
se refiere a la misma clase en la que la new
palabra 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, B
hereda ambos métodos de A
. La self
invocación está vinculada A
porque se define en A
la implementación del primer método, mientras que static
está 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