vou obter os mesmos resultados?
Na verdade não. Eu não sei de uma solução alternativa para o PHP 5.2, no entanto.
Qual é a diferença entre new self
e new static
?
self
refere-se à mesma classe em que a new
palavra-chave é realmente escrita.
static
, nas ligações estáticas tardias do PHP 5.3, refere-se a qualquer classe na hierarquia em que você chamou o método.
No exemplo a seguir, B
herda os dois métodos de A
. A self
invocação está vinculada a, A
porque é definida na A
implementação do primeiro método, enquanto static
está vinculada à classe chamada (também consulte 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