werde ich die gleichen Ergebnisse erzielen?
Nicht wirklich. Ich kenne allerdings keinen Workaround für PHP 5.2.
Was ist der Unterschied zwischen new self
y new static
?
self
bezieht sich auf die gleiche Klasse, in der die new
Schlüsselwort tatsächlich geschrieben wird.
static
bezieht sich in den späten statischen Bindungen von PHP 5.3 auf die Klasse in der Hierarchie, in der Sie die Methode aufgerufen haben.
Im folgenden Beispiel, B
erbt beide Methoden von A
. El self
Aufruf ist gebunden an A
weil sie definiert ist in A
die Implementierung der ersten Methode, während static
ist an die aufgerufene Klasse gebunden (siehe auch 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