Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen self und static in PHP

Detaillierte Erklärung des Unterschieds zwischen self und static in PHP

小云云
小云云Original
2018-03-31 09:59:191692Durchsuche

In PHP kann das Schlüsselwort self die aktuelle Klasse darstellen und wird im Allgemeinen zum Aufrufen statischer Methoden oder statischer Eigenschaften der aktuellen Klasse verwendet. Aber neben der Möglichkeit, das statische Attribut zu definieren, hat static auch eine ähnliche Funktion wie self (die die aktuelle Klasse darstellt).

Aber es gibt immer noch gewisse Unterschiede zwischen den beiden. Wir überprüfen es durch den Code:

<?php
header("Content-Type:text/html;charset=utf-8");
Class A{
	public static $p1=1;
	public $p2=2;
	public static function showInfo(){
		echo "<br/>".self::$p1;
	}
	public static function showInfo2(){
		echo "<br/>".static::$p1;
	}
}
Class B extends A{
	static $p1=10;//此处覆盖继承过来的变量p1.
	public $p2=20;
	
}
A::showInfo();
echo "<br/>";
B::showInfo();
echo "<hr/>";
A::showInfo2();
echo "<br/>";
B::showInfo2();

Das können wir an den Ergebnissen erkennen :

Wenn die Methode showInfo() aufgerufen wird, ist das Ausgabeobjekt self::$p1. Obwohl Klasse B von Klasse A erbt und die geerbte Methode in Klasse B aufgerufen wird, wird zu diesem Zeitpunkt immer die Klasse angezeigt, in der sich das Schlüsselwort self befindet. Daher kann man sagen, dass die durch self dargestellte aktuelle Klasse hauptsächlich die Klasse ist, in der sich der aktuelle Code befindet.

Wenn die Methode showInfo2() aufgerufen wird, ist das Ausgabeobjekt static::$p1. Zu diesem Zeitpunkt sind die Ausgabeergebnisse unterschiedlich. Klasse A gibt die von ihr aufgerufenen Attribute aus. B gibt auch die von ihm aufgerufenen Attribute aus (den Wert von $p2, der nach der Vererbung der Methode in Klasse A überschrieben wird). Daher: static stellt die Klasse dar, in der die aktuelle Methode aufgerufen wird.

Obwohl sowohl self als auch static die aktuelle Klasse darstellen können, sind ihre Bedeutungen unterschiedlich.

Verwandte Empfehlungen:

Der Unterschied zwischen self und static in PHP objektorientiert

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen self und static 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