Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied in der Verwendung dieser Selbststatik in PHP

Der Unterschied in der Verwendung dieser Selbststatik in PHP

零到壹度
零到壹度Original
2018-04-08 15:27:061468Durchsuche

In diesem Artikel wird hauptsächlich der Unterschied zwischen dieser Selbststatik in PHP vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.

Einführung

Ich habe kürzlich einen Software-Engineering-Kurs entworfen und bin auf ein Problem gestoßen, um den Laravel-Quellcode auszugraben und erneut zu suchen. und stellte fest, dass es sich um eine Selbststatik handelte. Probleme entstehen aufgrund mangelnden Verständnisses, also notieren Sie sie, um zu vermeiden, dass dieselben Fehler noch einmal gemacht werden.

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. ;

<?php
class 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 🎜>

<?php
class 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.

Das obige ist der detaillierte Inhalt vonDer Unterschied in der Verwendung 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
Vorheriger Artikel:PHP_EOL Newline-Parsing in PHPNächster Artikel:PHP_EOL Newline-Parsing in PHP