Der Unterschied zwischen self und static in der objektorientierten PHP-Programmierung_php-Fähigkeiten

WBOY
Freigeben: 2016-05-16 09:00:14
Original
2772 Leute haben es durchsucht

Bei der objektorientierten PHP-Programmierung werden Sie immer auf

stoßen
class test{
 public static function test(){
  self::func();

  static::func();
 }

 public static function func(){}
}

Nach dem Login kopieren

Aber kennen Sie den Unterschied zwischen Selbst und Statik?

Tatsächlich ist der Unterschied sehr einfach. Sie müssen nur ein paar Demos schreiben, um zu verstehen:

Demo für sich selbst:

class Car
{
 public static function model(){
  self::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Nach dem Login kopieren

Car::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Nach dem Login kopieren

Taxi::model();
Ausgabe erhalten

This is a car model
This is a car model
Nach dem Login kopieren

Sie können feststellen, dass self immer noch die Methode der übergeordneten Klasse in der Unterklasse aufruft

Demo für Statik

class Car
{
 public static function model(){
  static::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Car::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Taxi::model();

Nach dem Login kopieren

Ausgabe erhalten

This is a car model
This is a Taxi model
Nach dem Login kopieren

Sie können sehen, dass beim Aufrufen von static die Methode, die in der Methode der übergeordneten Klasse aufgerufen wird, immer noch die Methode der Unterklasse ist (so verwirrend ...), auch wenn die Unterklasse die Methode der übergeordneten Klasse aufruft.

Vor der PHP5.3-Version gab es noch einen kleinen Unterschied zwischen statisch und selbst. Was genau war das? Schließlich wurden sie alle von Version 7 dominiert. Ich werde es nicht mehr verstehen.

Die Zusammenfassung lautet: self kann nur auf Methoden in der aktuellen Klasse verweisen, und das Schlüsselwort static ermöglicht es Funktionen, Methoden in der Klasse zur Laufzeit dynamisch zu binden.

Verwandte Etiketten:
php
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