Was ist der Unterschied zwischen new self()
und new static()
in PHP? Oder ist es das Gleiche?
Es ist nicht das Gleiche. self
bezieht sich auf die Klasse, in der das new
Keyword geschrieben steht. static
hingegeben bezieht sich auf die Klasse in der Hierarchie, in der die Methode aufgerufen wurde. Folgendes Beispiel soll dies verdeutlichen:
class Class_A {
public static function get_self() {
return new self();
}
public static function get_static() {
return new static();
}
}
class Class_B extends Class_A {}
echo get_class(Class_B::get_self()); // A
echo get_class(Class_B::get_static()); // B
echo get_class(Class_A::get_self()); // A
echo get_class(Class_A::get_static()); // A