[php] Neues Selbst gegenüber neuer Statik


Answers

Wenn die Methode, in der dieser Code enthalten ist, nicht statisch ist, können Sie eine get_class($this) in 5.2 erhalten, indem Sie get_class($this) .

class A {
    public function create1() {
        $class = get_class($this);
        return new $class();
    }
    public function create2() {
        return new static();
    }
}

class B extends A {

}

$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));

Die Ergebnisse:

string(1) "B"
string(1) "B"
Question

Ich konvertiere eine PHP 5.3-Bibliothek, um mit PHP 5.2 zu arbeiten. Die Hauptsache, die mir in den Weg kommt, ist die Verwendung der späten statischen Bindung wie die return new static($options); , wenn ich dies umwandeln, return new self($options) , bekomme ich die gleichen Ergebnisse?

Was ist der Unterschied zwischen new self und new static ?




Links