Unterschied zwischen new self() und new static() in PHP

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert