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

小云云
Freigeben: 2023-03-19 16:46:01
Original
1219 Leute haben es durchsucht

Ob new static() oder new self(), ein neues Objekt ist neu. Dieser Artikel stellt Ihnen hauptsächlich den Unterschied zwischen new self() und new static() in der objektorientierten PHP-Umgebung vor. Lassen Sie uns gemeinsam einen Blick darauf werfen.

Der Unterschied ist wie folgt:

Erklären Sie zunächst die Schlussfolgerung. In PHP zeigt self auf die Klasse, die die aktuell aufgerufene Methode definiert, und static zeigt auf die Klasse, die die aktuelle statische Methode aufruft .

Als nächstes wird ein Beispiel verwendet, um das obige Ergebnis zu beweisen

class A 
{
 public static $_a = 'Class A';

 public static function echoProperty()
 {
 echo self::$_a . PHP_EOL;
 }
}

class B extends A 
{
 public static $_a = 'Class B';
}

$obj = new B();
B::echoProperty();//输出 Class A
Nach dem Login kopieren

Der Grund dafür ist, dass self:: oder __CLASS__ verwendet wird, um statisch auf die aktuelle Klasse zu verweisen Ändern Sie in der Klasse, in der die Methode aufgerufen wird, die Methode echoProperty der obigen Klasse A wie folgt:

class A 
{
 public static $_a = 'Class A';

 public static function echoProperty()
 {
 echo static::$_a . PHP_EOL;
 }
}
//再次调用B::echoProperty将输出 'CLASS B'
Nach dem Login kopieren

Um zu vermeiden, dass die Unterklasse die statischen Eigenschaften der übergeordneten Klasse überschreibt Im ersten Beispiel oben sehen Sie: Verwenden Sie geerbte Methoden, um weiterhin auf die statischen Eigenschaften der übergeordneten Klasse zuzugreifen. PHP5.3 fügt eine neue Syntax hinzu: Verwenden Sie das Schlüsselwort static anstelle des Schlüsselworts self, um einen statischen Punkt zu erstellen und von dort zurückzukehren get_called_class(). Dieselbe Klasse, also die Klasse, die gerade die statische Methode aufruft, dieses Schlüsselwort ist auch für den Zugriff auf die statische Methode gültig.

Das folgende Beispiel veranschaulicht den Unterschied zwischen new self() und new static() besser (letzteres verwendet die späte statische Bindung von PHP, um auf die aktuelle Klasse der aufrufenden Methode zu verweisen)

class A 
{
 public static function get_self() 
 {
 return new self();
 }

 public static function get_static() 
 {
 return new static();
 }
}

class B extends A {}

echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A
Nach dem Login kopieren

Verwandte Empfehlungen:

Überblick über die objektorientierten PHP-Designprinzipien

Praktische Grundkenntnisse über objektorientiertes PHP

Beispiel-Tutorial für ein grundlegendes objektorientiertes PHP-Konzept

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen new self() und new static() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!