PHP5 ist eine Sprache, die die meisten Funktionen einer objektorientierten Sprache aufweist. Sie verfügt über viel mehr objektorientierte Funktionen als PHP4, aber einige Konzepte sind etwas verwirrend, daher werde ich heute nicht gut darüber sprechen it. Bitte verzeihen Sie mir, Experten. (Um diesen Artikel zu lesen, müssen Sie die objektorientierten Kenntnisse von PHP5 verstehen.)
Lassen Sie uns zunächst die oben genannten drei Schlüsselwörter verstehen: this, self, parent, was wörtlich leichter zu verstehen ist dazu, self, vater, es macht mehr Spaß, lasst uns zunächst ein paar Konzepte festlegen. Wo werden diese drei Schlüsselwörter verwendet? Lassen Sie uns kurz erklären, dass dies ein Zeiger auf das aktuelle Objekt ist it) und self ist ein Zeiger auf das aktuelle Objekt, parent ist ein Zeiger auf die übergeordnete Klasse. Wir verwenden hier häufig Hinweise, um es zu beschreiben, weil es keine bessere Sprache gibt, um es auszudrücken. Haha, ich habe Chinesisch nicht gut gelernt. -_-#
Wenn Sie es auf diese Weise nicht gut verstehen, lassen Sie uns anhand konkreter Beispiele darüber sprechen.
(1) dies
1 <?php
2
Benutzername der Klasse 3
4 {
5 //Attribute definieren
6 privater $name;
7
8 //Konstruktor definieren
9 Funktion __construct( $name )
10 {
11 $this->name = $name; //Dieser Zeiger wurde hier verwendet
12}
13
14 //Destruktor
15 Funktion __destruct(){}
16
17 //Benutzername-Mitgliedsfunktion drucken
18 Funktion printName()
19 {
20 print($this->name); //Dieser Zeiger wird erneut verwendet
einundzwanzig }
zweiundzwanzig }
dreiundzwanzig
24 //Objekt instanziieren
25 $nameObject = new UserName( "heiyeluren" );
26
27 //Drucken ausführen
28 $nameObject->printName(); //Ausgabe: heiyeluren
29
30 //Zweite Instanziierung des Objekts
31 $nameObject2 = neuer Benutzername( "PHP5" );
32
33 //Drucken ausführen
34 $nameObject2->printName(); //Ausgabe: PHP5
35 ?>
Sehen wir uns an, dass die obige Klasse diesen Zeiger jeweils in den Zeilen 11 und 20 verwendet. Auf wen zeigt dieser Zeiger zu diesem Zeitpunkt? Tatsächlich bestimmt dies, auf wen es bei der Instanziierung verweist. Wenn das Objekt beispielsweise zum ersten Mal instanziiert wird (Zeile 25), dann zeigt dies auf das Objekt $nameObject. Beim Drucken in Zeile 18 wird dann print( $this -><name) wird zu print($nameObject->name), dann wird natürlich „heiyeluren“ ausgegeben. Im zweiten Fall wird print( $this->name ) zu print( $nameObject2->name ), sodass „PHP5“ ausgegeben wird. Daher ist dies ein Zeiger auf die aktuelle Objektinstanz und zeigt nicht auf ein anderes Objekt oder eine andere Klasse.
(2)self
Zunächst müssen wir klarstellen, dass self auf die Klasse selbst zeigt, das heißt, self zeigt nicht auf ein instanziiertes Objekt. Im Allgemeinen wird self verwendet, um auf statische Variablen in der Klasse zu zeigen.
1 <?php
2
3-Klassen-Schalter
4 {
5 //Eigenschaften definieren, einschließlich einer statischen Variablen
6 private static $firstCount = 0;
7 private $lastCount;
8
9 //Konstrukteur
10 Funktion __construct()
11 {
12 $this->lastCount = ++selft::$firstCount; //Verwenden Sie self, um statische Variablen aufzurufen. Beim Aufruf von self müssen Sie Folgendes verwenden: (Feldoperationssymbol).
13}
14
15 //Den neuesten Wert drucken
16 Funktion printLastCount()
17 {
18 print( $this->lastCount );
19}
20}
einundzwanzig
22 //Objekt instanziieren
23 $countObject = new Counter();
vierundzwanzig
25 $countObject->printLastCount(); //Ausgabe 1
26
27 ?>
Wir müssen hier nur auf zwei Stellen achten, Zeile 6 und Zeile 12. Wir haben in der zweiten Zeile eine statische Variable $firstCount definiert, deren Anfangswert 0 ist. Dann haben wir diesen Wert in Zeile 12 aufgerufen, ihn mit self aufgerufen und mit „::“ eine Verbindung in der Mitte hergestellt, was wir auch getan haben Rufen Sie den Domänenoperator auf. Zu diesem Zeitpunkt rufen wir die von der Klasse selbst definierte statische Variable $ frestCount auf. Unsere statische Variable hat nichts mit der Instanz des folgenden Objekts zu tun, sondern bezieht sich nur auf die Klasse die Klasse selbst, dann können wir dies nicht zum Referenzieren verwenden. Sie können self zum Referenzieren verwenden, da self auf die Klasse selbst verweist und nichts mit einer Objektinstanz zu tun hat. Mit anderen Worten: Wenn unsere Klasse statische Mitglieder hat, müssen wir sie auch mit self aufrufen.
(3) parent
Wir wissen, dass parent ein Zeiger auf die übergeordnete Klasse ist. Im Allgemeinen verwenden wir parent, um den Konstruktor der übergeordneten Klasse aufzurufen.
1 <?php
2
3 //Basisklasse
4 Klassen Tier
5 {
6 //Attribute der Basisklasse
7 öffentlicher $name; //name
8
9 //Konstruktor der Basisklasse
10 öffentliche Funktion __construct( $name )
11 {
12 $this->name = $name;
13}
14}
15
16 // Abgeleitete Klasse
17 Klasse Person erweitert Tier //Personenklasse erbt Tierklasse
18 {
19 public $personSex; //Gender
20 public $personAge; //Alter
einundzwanzig
22 //Konstruktor der geerbten Klasse
23 Funktion __construct( $personSex, $personAge )
vierundzwanzig {
25 parent::__construct( "heiyeluren" ); //Verwenden Sie parent, um den Konstruktor der übergeordneten Klasse aufzurufen
26 $this->personSex = $personSex;
27 $this->personAge = $personAge;
28 }
29
30 Funktion printPerson()
31 {
32 print( $this->name. " ist " .$this->personSex. ",dieses Jahr " .$this->personAge );
33}
34}
35
36 //Personenobjekt instanziieren
37 $personObject = new Person( "männlich", "21");
38
39 //Drucken ausführen
40 $personObject->printPerson(); //Ausgabe: heiyeluren ist männlich, dieses Jahr 21
41
42?>
Wir achten auf folgende Details: Alle Mitgliedsattribute sind öffentlich, insbesondere die der übergeordneten Klasse, sodass geerbte Klassen darüber darauf zugreifen können. Wir achten auf den entscheidenden Punkt, Zeile 25: parent::__construct( "heiyeluren" ). Zu diesem Zeitpunkt verwenden wir parent, um den Konstruktor der übergeordneten Klasse aufzurufen, um die übergeordnete Klasse zu initialisieren, da die Mitglieder der übergeordneten Klasse vorhanden sind alle öffentlich. Wir können dies also direkt verwenden, um die geerbte Klasse aufzurufen.
Zusammenfassung:
Dies ist ein Zeiger auf eine Objektinstanz, self ist ein Verweis auf die Klasse selbst und parent ist ein Verweis auf die übergeordnete Klasse.
Im Grunde ist das alles, was ich weiß. Bitte weisen Sie darauf hin.
Meine E-Mail: [email protected]
Schreibzeit: 3.11.2004 18:30
http://dev.csdn.net/author/heiyeshuwu/702e33d6abaf4be58c06f1b55cf0fc8c.html