Heim >Backend-Entwicklung >PHP-Tutorial >Der Unterschied zwischen dieser Selbststatik in PHP

Der Unterschied zwischen dieser Selbststatik in PHP

不言
不言Original
2018-04-14 17:14:312279Durchsuche

Dieser Artikel stellt hauptsächlich den Unterschied zwischen dieser Selbststatik in PHP vor, der einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.

Nachdruck von: https: / /blog.csdn.net/mrzhouxiaofei/article/details/78648079

Einführung

Ich habe kürzlich einen Software-Engineering-Kurs entworfen und bin auf ein Problem gestoßen. Ich habe den Laravel-Quellcode ausgegraben und erneut gesucht. Dabei stellte ich fest, dass das Problem auf mangelndes tiefes Verständnis der Selbststatik zurückzuführen war. Deshalb habe ich es aufgezeichnet, um zu vermeiden, dass derselbe Fehler noch einmal gemacht wird.

Text

dieses

das ist leichter zu verstehen. Es zeigt auf das aktuelle Objekt und wird verwendet, um auf die nicht statischen Variablen und nicht statischen Methoden des aktuellen Objekts zuzugreifen Objekt. Es bezieht sich auf das Objekt. ;

<?phpclass Person {
    public $name;    public function getName() {
        echo $this->name;
    }
}$p = new Person();$p2 = new Person();$p->name = "小红";$p2->name = "小明";$p->getName();  // 小红$p2->getName();  // 小明

Im obigen Beispiel sind zwei Objekte neu und die Namensattribute der Objekte werden jeweils in getName() verwendet, um auf den Namen zuzugreifen Attribut des aktuellen Objekts, daher werden jeweils die Namenswerte ausgegeben. Daher verweist dies auf das aktuelle Objekt und nicht auf andere Objekte oder Klassen.

self

self verweist auf die Klasse selbst und nicht auf ein instanziiertes Objekt. Es wird im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden in der Klasse verwendet 🎜>

<?phpclass Person {
    public static $name = "小红";    public static function getName() {
        echo self::$name;
    }
}$p = new Person();$p2 = new Person();$p::getName();  // 小红$p2::getName();  // 小红$p::$name = "小明";$p::getName();  // 小明$p2::getName();  // 小明
Im obigen Beispiel sind zwei Objekte neu und der Namensattributwert des anderen Objekts wird ebenfalls geändert. Daher zeigt self auf die aktuelle Klasse hat nichts mit dem Objekt zu tun. Es ist ein gemeinsamer Wert für alle Objekte.

statisch

statisch ist dasselbe wie self, beide verweisen auf die Klasse und werden im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden in der Klasse verwendet, es gibt jedoch einige Unterschiede, insbesondere: self In welcher Klasse wird diese Klasse tatsächlich aufgerufen? Static wird dann über die Unterklasse verwendet, die offiziell als

späte statische Bindung bezeichnet wird .

Wie Sie dem obigen Beispiel entnehmen können, ist self in Klasse A geschrieben und zeigt beim Aufruf auf Klasse A. static ist ebenfalls in Klasse A geschrieben, verwendet jedoch ein Objekt der Klasse B , eine Unterklasse der Klasse A. Beim Aufruf zeigt es auf Klasse B. Bei Verwendung bestimmt static, auf welche Klasse es zeigt. Dies ist eine
<?phpclass A {
    public function say() {
        echo "Hello";
    }    public function saySelf() {
        self::say();
    }    public function sayStatic() {
        static::say();
    }
}class B extends A {
    public function say() {
        echo "World";
    }
}$b = new B();$b->say();  // World$b->saySelf();  // Hello$b->sayStatic();  // World
späte statische Bindung

. Späte statische Bindung

Zusammenfassung

dies zeigt auf das aktuelle Objekt, das für den Zugriff auf die nicht statischen Variablen und nicht statischen Methoden des aktuellen Objekts verwendet wird;

self zeigt auf die Klasse und wird im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden der aktuellen Klasse verwendet. Die Klasse, auf die es zeigt, wurde vor der Ausführung bestimmt.

static zeigt auf die Klasse und wird im Allgemeinen für den Zugriff auf statische Variablen und statische Methoden verwendet die aktuelle Klasse,
ist jedoch nicht auf
beschränkt. Ein statischer Aufruf bestimmt, auf welche Klasse zur Laufzeit verwiesen wird. Verwandte Empfehlungen:

Detaillierte Erläuterung der Unterschiede zwischen self, static und $this in PHP und später statischer Bindung

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen dieser Selbststatik in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn