obtiendrai-je les mêmes résultats ?
Pas vraiment. Je ne connais pas de solution de contournement pour PHP 5.2, cependant.
Quelle est la différence entre new self
y new static
?
self
se réfère à la même classe dans laquelle le new
le mot-clé est réellement écrit.
static
dans les liaisons statiques de PHP 5.3, fait référence à la classe dans la hiérarchie sur laquelle vous avez appelé la méthode.
Dans l'exemple suivant, B
hérite des deux méthodes de A
. Le site self
est liée à A
car il est défini dans A
de la première méthode, tandis que static
est lié à la classe appelée (voir aussi 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