PHP this,self 跟 parent 关键字
PHP this,self 和 parent 关键字
?
我们先建立几个概念,这三个关键字分别是用在什么地方 呢?我们初步解释一下,this是指向当前对象的指针(我们姑且用C里面的指针来看吧),self是指向当前类的指针,parent是指向父类的指针。
这么说还不能很了解,那我们就根据实际的例子结合来讲讲。
(1) this
?
<?phpclass UserName{ //定义属性 private $name; //定义构造函数 function __construct( $name ) { $this->name = $name; //这里已经使用了this指针 } //析构函数 function __destruct(){} //打印用户名成员函数 function printName() { print( $this->name ); //又使用了this指针 } } //实例化对象 $nameObject = new UserName( "heiyeluren" ); //执行打印 $nameObject->printName(); //输出: heiyeluren //第二次实例化对象 $nameObject2 = new UserName( "PHP5" ); //执行打印 $nameObject2->printName(); //输出:PHP5?>
我们看,上面的类分别在10行和18行使用了this指针,那么当时this是指向谁呢?其实this是在实例化的时候来确定指向谁,比如第一次实例化对象 的时候(22行),那么当时this就是指向$nameObject对象,那么执行18行的打印的时候就把print( $this->
?
(2)self
首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。
?
<?php class Counter { //定义属性,包括一个静态变量 private static $firstCount = 0; private $lastCount; //构造函数 function __construct() { $this->lastCount = ++selft::$firstCount; //使用self来调用静态变量,使用self调用必须使用::(域运算符号) } //打印最次数值 function printLastCount() { print( $this->lastCount ); } } //实例化对象$countObject = new Counter();$countObject->printLastCount(); //输出 1?>
?我们这里只要注意两个地方,第6行和第12行。我们在第二行定义了一个静态变量$firstCount,并且初始值为0,那么在12行的时候调用了这个值 得,使用的是self来调用,并且中间使用"::"来连接,就是我们所谓的域运算符,那么这时候我们调用的就是类自己定义的静态变量$ frestCount,我们的静态变量与下面对象的实例无关,它只是跟类有关,那么我调用类本身的的,那么我们就无法使用this来引用,可以使用 self来引用,因为self是指向类本身,与任何对象实例无关。换句话说,假如我们的类里面静态的成员,我们也必须使用self来调用。
?
(3)parent
我们知道parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。
?
<?php//基类class Animal{ //基类的属性 public $name; //名字 //基类的构造函数 public function __construct( $name ) { $this->name = $name; }} //派生类 class Person extends Animal //Person类继承了Animal类 { public $personSex; //性别 public $personAge; //年龄 //继承类的构造函数 function __construct( $personSex, $personAge ) { parent::__construct( "heiyeluren" ); //使用parent调用了父类的构造函数 $this->personSex = $personSex; $this->personAge = $personAge; } function printPerson() { print( $this->name. " is " .$this->personSex. ",this year " .$this->personAge ); } } //实例化Person对象 $personObject = new Person( "male", "21"); //执行打印 $personObject->printPerson(); //输出:heiyeluren is male,this year 21 ?>
?我们注意这么几个细节:成员属性都是public的,特别是父类的,是为了供继承类通过this来访问。我们注意关键的地方,第25行:parent:: __construct( "heiyeluren" ),这时候我们就使用parent来调用父类的构造函数进行对父类的初始化,因为父类的成员都是public的,于是我们就能够在继承类中直接使用 this来调用。
?
?
?

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

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

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

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

In diesem Artikel lernen wir die Funktion enumerate() und den Zweck der Funktion „enumerate()“ in Python kennen. Was ist die Funktion enumerate()? Die Funktion enumerate() von Python akzeptiert eine Datensammlung als Parameter und gibt ein Aufzählungsobjekt zurück. Aufzählungsobjekte werden als Schlüssel-Wert-Paare zurückgegeben. Der Schlüssel ist der Index, der jedem Element entspricht, und der Wert sind die Elemente. Syntax enumerate(iterable,start) Parameter iterable – Die übergebene Datensammlung kann als Aufzählungsobjekt namens iterablestart zurückgegeben werden – Wie der Name schon sagt, wird der Startindex des Aufzählungsobjekts durch start definiert. wenn wir es ignorieren

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem. Wenn Entwickler MySQL verwenden, müssen sie häufig gespeicherte Prozeduren erstellen und verwalten. Die MySQL.proc-Tabelle ist eine sehr wichtige Systemtabelle. Sie speichert Informationen zu allen gespeicherten Prozeduren in der Datenbank, einschließlich des Namens, der Definition, der Parameter usw. der gespeicherten Prozeduren. In diesem Artikel erklären wir ausführlich die Rolle und Funktionalität der MySQL.proc-Tabelle

Verwendung und Funktion von Vue.Funktion verwenden Vue ist ein beliebtes Frontend-Framework, das viele nützliche Features und Funktionen bietet. Eine davon ist die Vue.use-Funktion, die es uns ermöglicht, Plugins in Vue-Anwendungen zu verwenden. In diesem Artikel werden die Verwendung und Funktion der Vue.use-Funktion vorgestellt und einige Codebeispiele bereitgestellt. Die grundlegende Verwendung der Vue.use-Funktion ist sehr einfach. Rufen Sie sie einfach auf, bevor Vue instanziiert wird, und übergeben Sie das Plugin, das Sie verwenden möchten, als Parameter. Hier ist ein einfaches Beispiel: //Plugin vorstellen und verwenden
