Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung der Unterschiede und Verwendung der Schlüsselwörter this, self und parent in PHP

Detaillierte Erklärung der Unterschiede und Verwendung der Schlüsselwörter this, self und parent in PHP

Jul 08, 2017 am 10:15 AM
parent self this

{一}Einer der Unterschiede zwischen diesem, selbst, übergeordneten PHP in diesem Artikel

Objektorientierte Programmierung (OOP, Object Oriented Programming) ist mittlerweile zu einer grundlegenden Fähigkeit geworden Programmierer. Die Verwendung von OOP-Ideen für die fortgeschrittene Programmierung von PHP ist für die Verbesserung der PHP-Programmierfunktionen und die Planung der Webentwicklungsarchitektur von großer Bedeutung.
Nach der Umschreibung hat PHP5 einen großen Sprung in der Unterstützung von OOP gemacht und ist zu einer Sprache mit den meisten Funktionen einer objektorientierten Sprache geworden. Sie verfügt über viel mehr objektorientierte Funktionen als PHP4. Worüber ich hier hauptsächlich spreche, ist der Unterschied zwischen den drei Schlüsselwörtern this, self und parent. Im wörtlichen Sinne beziehen sie sich auf mich selbst bzw. auf meinen Vater. Lassen Sie mich zunächst eine vorläufige Erklärung geben. Dies ist ein Zeiger auf das aktuelle Objekt (kann in C als Zeiger betrachtet werden), self ist ein Zeiger auf die aktuelle Klasse und parent ist ein Zeiger auf die übergeordnete Klasse. Wir verwenden hier häufig Zeiger zur Beschreibung, da es keine bessere Sprache gibt, um es auszudrücken. Bezüglich des Konzepts der Zeiger können Sie auf die Enzyklopädie verweisen.
Lassen Sie uns anhand konkreter Beispiele darüber sprechen.

Der Code lautet wie folgt:

<?php
  classname          //建立了一个名为name的类
 {
    private$name;         //定义属性,私有
    //定义
构造函数
,用于初始化赋值
    function construct( $name )
    {
         $this->name =$name;         //这里已经使用了this指针语句①
    }
    //
析构函数
    function destruct(){}
    //打印用户名成员函数
    function printname()
    {
         print( $this->name);             //再次使用了this指针语句②,也可以使用echo输出
    }
 }
 $obj1 = new name("PBPHome");   //实例化对象 语句③
 //执行打印
 $obj1->printname(); //输出:PBPHome
 echo"<br>";                                    //输出:回车
 //第二次实例化对象
 $obj2 = new name( "PHP" );
 //执行打印
 $obj2->printname();                         //输出:PHP
 ?>
Nach dem Login kopieren

Erklärung: Die obige Klasse verwendet diesen Zeiger in Anweisung ① und Anweisung ② bzw. Auf wen zeigte das damals? Tatsächlich bestimmt dies, auf wen es bei der Instanziierung zeigt. Wenn das Objekt zum ersten Mal instanziiert wird (Anweisung ③), zeigt dies dann auf das Objekt $obj1, wenn die Ausgabe von Anweisung ② ausgeführt wird , print( $this- >name ), dann wird natürlich „PBPHome“ ausgegeben. Im zweiten Fall wird print($this->name) zu print($obj2->name), sodass „PHP“ ausgegeben wird. Daher ist dies ein Zeiger auf die aktuelle Objektinstanz und zeigt nicht auf ein anderes Objekt oder eine andere Klasse.

{2} Der Unterschied zwischen this, self und parent in PHP Teil 2 self

In diesem Artikel erklären wir die Verwendung von self
Zuerst müssen wir es klarstellen Dieses Selbst bezieht sich auf die Klasse selbst, das heißt, Selbst zeigt nicht auf ein instanziiertes Objekt. Im Allgemeinen wird Selbst verwendet, um auf statische Variablen in der Klasse zu verweisen. Wenn wir statische Mitglieder in der Klasse verwenden (normalerweise mit dem Schlüsselwort static), müssen wir zum Aufrufen auch self verwenden. Beachten Sie außerdem, dass bei Verwendung von self zum Aufrufen statischer Variablen Folgendes verwendet werden muss: (Feld Operator Nummer), siehe Beispiel.

Der Code lautet wie folgt:

<?php
    classcounter     //定义一个counter的类
    {
        //定义属性,包括一个静态变量$firstCount,并赋初值0 语句①  
        private static $firstCount = 0;
        private $lastCount;
        //构造函数
        function construct()
        {
             $this->lastCount =++self::$firstCount;      //使用self来调用静态变量 语句②
        }
        //打印lastCount数值
        function printLastCount()
        {
             print( $this->lastCount );
        }
    }
  //实例化对象
  $obj = new Counter();
 $obj->printLastCount();                             //执行到这里的时候,程序输出1
 ?>
Nach dem Login kopieren

Es gibt zwei Stellen, auf die man achten muss: Aussage ① und Aussage ②. Wir haben in Anweisung ① eine statische Variable $firstCount definiert und dann self verwendet, um diesen Wert in Anweisung ② aufzurufen. Dann rufen wir zu diesem Zeitpunkt die von der Klasse selbst definierte statische Variable $frestCount auf. Unsere statische Variable hat nichts mit der Instanz des folgenden Objekts zu tun, sie bezieht sich nur auf die Klasse. Wenn ich dann die Klasse selbst aufrufe, können wir dies nicht verwenden, um auf sie zu verweisen, da self auf die Klasse selbst verweist hat nichts mit einer Objektinstanz zu tun. Dann ruft das zuvor verwendete this das instanziierte Objekt $obj auf, also lassen Sie sich nicht verwirren.
Das ist es für mich selbst. Mit Beispielen ist es einfacher zu verstehen. Das Ende des zweiten Kapitels.

{3} Der Unterschied zwischen this, self und parent in PHP Teil 3 parent

In diesem Artikel erklären wir die Verwendung von parent.
Zunächst machen wir deutlich, dass parent ein Zeiger auf die übergeordnete Klasse ist. Im Allgemeinen verwenden wir parent, um den Konstruktor der übergeordneten Klasse aufzurufen. Das Beispiel lautet wie folgt:

Der Code lautet wie folgt:

<?php
 //建立基类Animal
 class Animal
 {
    public $name; //基类的属性,名字$name
    //基类的构造函数,初始化赋值
    public function construct( $name )
    {
         $this->name = $name;
    }
 }
 //定义派生类Person 继承自Animal类
 class Person extends Animal
 {
    public$personSex;       //对于派生类,新定义了属性$personSex性别、$personAge年龄
    public $personAge;
    //派生类的构造函数
    function construct( $personSex, $personAge )
    {
         parent::construct( "PBPHome");    //使用parent调用了父类的构造函数 语句①
         $this->personSex = $personSex;
         $this->personAge = $personAge;
    }
    //派生类的成员函数,用于打印,格式:名字 is name,age is 年龄
    function printPerson()
    {
         print( $this->name. " is ".$this->personSex. ",age is ".$this->personAge );
     }
 }
 //实例化Person对象
 $personObject = new Person( "male", "21");
 //执行打印
 $personObject->printPerson();//输出结果:PBPHome is male,age is 21
 ?>
Nach dem Login kopieren

, der auch die Verwendung davon enthält, Sie können ihn selbst analysieren. Wir achten auf dieses Detail: Die Mitgliedsattribute sind alle öffentlich (öffentliche -Attribute und -Methoden , auf die Code innerhalb und außerhalb der Klasse zugreifen kann), insbesondere die der übergeordneten Klasse. Dies ist für den Zugriff durch geerbte Klassen vorgesehen Dies. Der entscheidende Punkt ist Anweisung ①: parent::construct("heiyeluren"). Zu diesem Zeitpunkt verwenden wir parent, um den Konstruktor der übergeordneten Klasse aufzurufen. Auf diese Weise werden die Objekte der geerbten Klasse zugewiesen der Name PBPHome. Wir können es testen, indem wir ein anderes Objekt $personObject1 instanziieren. Nach dem Drucken lautet der Name immer noch PBPHome.
Zusammenfassung: Dies ist ein Zeiger auf eine Objektinstanz, der beim Instanziieren bestimmt wird; self ist ein Verweis auf die Klasse selbst, der im Allgemeinen verwendet wird, um auf statische Variablen in der übergeordneten Klasse zu verweisen , parent wird verwendet, um den Konstruktor der übergeordneten Klasse aufzurufen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Unterschiede und Verwendung der Schlüsselwörter this, self und parent in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Warum NameResolutionError(self.host, self, e) von e und wie man es löst Warum NameResolutionError(self.host, self, e) von e und wie man es löst Mar 01, 2024 pm 01:20 PM

Der Grund für den Fehler ist NameResolutionError(self.host,self,e)frome, ein Ausnahmetyp in der urllib3-Bibliothek. Der Grund für diesen Fehler ist, dass die DNS-Auflösung fehlgeschlagen ist, d. h. der Hostname oder die IP-Adresse Der Lösungsversuch konnte nicht gefunden werden. Dies kann daran liegen, dass die eingegebene URL-Adresse falsch ist oder der DNS-Server vorübergehend nicht verfügbar ist. So beheben Sie diesen Fehler Es gibt möglicherweise mehrere Möglichkeiten, diesen Fehler zu beheben: Überprüfen Sie, ob die eingegebene URL-Adresse korrekt ist und stellen Sie sicher, dass sie zugänglich ist. Stellen Sie sicher, dass der DNS-Server verfügbar ist. Sie können es mit dem Befehl „ping“ in der Befehlszeile versuchen Um zu testen, ob der DNS-Server verfügbar ist, versuchen Sie, über die IP-Adresse statt über den Hostnamen auf die Website zuzugreifen, wenn Sie sich hinter einem Proxy befinden

So verwenden Sie self in Python So verwenden Sie self in Python May 17, 2023 pm 10:40 PM

Bevor wir die Verwendung von self in Python vorstellen, stellen wir zunächst die Klassen und Instanzen in Python vor. Wir wissen, dass Klassen und Instanzen abstrakte Vorlagen sein können vertreten durch eine Studentenklasse. Instanzen sind spezifische „Objekte“, die auf der Grundlage von Klassen erstellt werden. Jedes Objekt erbt dieselben Methoden von der Klasse, seine Daten können jedoch unterschiedlich sein. 1. Nehmen Sie die Klasse Student als Beispiel. In Python ist die Klasse wie folgt definiert: classStudent(object):pass(Object) gibt an, von welcher Klasse die Klasse erbt

Wie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu? Wie greife ich in Python auf die Eigenschaften der übergeordneten Klasse zu? Aug 26, 2023 am 10:17 AM

In der objektorientierten Programmierung können wir durch Vererbung neue Klassen erstellen, die die Eigenschaften und Methoden einer vorhandenen Klasse erben. Dieses leistungsstarke Konzept ermöglicht die Wiederverwendung von Code, Modularität und Erweiterbarkeit in unseren Programmen. Bevor wir uns mit dem Zugriff auf übergeordnete Klassenattribute befassen, gehen wir vor

Lassen Sie uns darüber sprechen, warum Vue2 dadurch in verschiedenen Optionen auf Eigenschaften zugreifen kann Lassen Sie uns darüber sprechen, warum Vue2 dadurch in verschiedenen Optionen auf Eigenschaften zugreifen kann Dec 08, 2022 pm 08:22 PM

Dieser Artikel hilft Ihnen bei der Interpretation des Vue-Quellcodes und stellt vor, warum Sie damit in Vue2 auf Eigenschaften in verschiedenen Optionen zugreifen können. Ich hoffe, dass er für alle hilfreich ist!

Ein Artikel, der diesen Punkt versteht und 70 % der Front-End-Leute erreicht Ein Artikel, der diesen Punkt versteht und 70 % der Front-End-Leute erreicht Sep 06, 2022 pm 05:03 PM

Ein Kollege blieb aufgrund eines Fehlers stecken, auf den dadurch hingewiesen wurde. Dieses Zeigeproblem führte dazu, dass eine Pfeilfunktion verwendet wurde, was dazu führte, dass die entsprechenden Requisiten nicht abgerufen werden konnten. Er wusste es nicht, als ich es ihm vorstellte, und dann habe ich mir bewusst die Front-End-Kommunikationsgruppe angesehen. Bisher verstehen es mindestens 70 % der Front-End-Programmierer nicht Sie diesen Link Wenn alles unklar ist Wenn Sie es noch nicht gelernt haben, geben Sie mir bitte eine große Klappe.

Clevere Möglichkeit, dieses Schlüsselwort in jQuery zu verwenden Clevere Möglichkeit, dieses Schlüsselwort in jQuery zu verwenden Feb 25, 2024 pm 04:09 PM

Flexible Verwendung dieses Schlüsselworts in jQuery In jQuery ist das Schlüsselwort this ein sehr wichtiges und flexibles Konzept. Es wird verwendet, um auf das aktuell manipulierte DOM-Element zu verweisen. Durch die rationale Verwendung dieses Schlüsselworts können wir Elemente auf der Seite einfach bedienen und verschiedene interaktive Effekte und Funktionen erzielen. In diesem Artikel werden spezifische Codebeispiele kombiniert, um die flexible Verwendung dieses Schlüsselworts in jQuery vorzustellen. Dieses einfache Beispiel Schauen wir uns zunächst ein einfaches Beispiel an. Angenommen, wir haben eine

Was ist das? Eine ausführliche Analyse dazu in JavaScript Was ist das? Eine ausführliche Analyse dazu in JavaScript Aug 04, 2022 pm 05:02 PM

Was ist das? Der folgende Artikel wird Ihnen dies in JavaScript vorstellen und auf die Unterschiede zwischen verschiedenen Aufrufmethoden von Funktionen eingehen. Ich hoffe, er wird Ihnen hilfreich sein!

So verwenden Sie diese Methode in Java So verwenden Sie diese Methode in Java Apr 18, 2023 pm 01:58 PM

1. Schlüsselwort this 1. Typ davon: Welches Objekt aufgerufen wird, ist der Referenztyp dieses Objekts 2. Zusammenfassung der Verwendung 1. this.data;//Zugriffsattribut 2. this.func();//Zugriffsmethode 3.this ( );//Andere Konstruktoren in dieser Klasse aufrufen 3. Erklärung der Verwendung 1.this.data wird in Mitgliedsmethoden verwendet. Lassen Sie uns sehen, was passiert, wenn dies nicht hinzugefügt wird classMyDate{publicintyear;publicintmonth;publicintday; intmonth,intday){ye

See all articles