PHPthis, self, and parent keywords? Let's first establish several concepts. where are these three keywords used? This is a pointer to the current object (let's look at the pointer in C), self is a pointer to the current class, and parent is a pointer to the parent class. If we do not know much about this, let's talk about it based on the actual examples. (1) this? & Lt ;? Php PHP this, self, and parent keywords
?
Let's first establish several concepts. where are these three keywords used? This is a pointer to the current object (let's look at the pointer in C), self is a pointer to the current class, and parent is a pointer to the parent class.
If we do not know much about this, let's talk about it based on the actual examples.
(1) this
?
Name = $ name; // this pointer has been used here} // destructor function _ destruct () {}// print the username member function printName () {print ($ this-> name); // this pointer is used again} // instantiate the object $ nameObject = new UserName ("heiyeluren "); // execute the print $ nameObject-> printName (); // output: heiyeluren // The second instantiated object $ nameObject2 = new UserName ("PHP5 "); // execute the print $ nameObject2-> printName (); // output: PHP5?>
We can see that the class above uses the this pointer in 10 rows and 18 rows respectively, so who is this pointing? In fact, this is used to determine who to point to During instantiation. for example, when the object is instantiated for the first time (22 rows), then this is to point to the $ nameObject object, then print ($ this-> Name), then of course the output is "heiyeluren ". In the second instance, print ($ this-> name) is changed to print ($ nameObject2-> name), so "PHP5" is output ". Therefore, this is a pointer to the current object instance and does not point to any other object or class.
?
(2) self
First, we need to make it clear that self points to the class itself, that is, self does not point to any instantiated object. Generally, self points to static variables in the class.
?
LastCount = ++ selft: $ firstCount; // when using self to call static variables, you must use: (domain operator number)} // Print the maximum value function printLastCount () {print ($ this-> lastCount) ;}// instantiate the object $ countObject = new Counter (); $ countObject-> printLastCount (); // output 1?>
? Here we only need to pay attention to two places, 6th rows and 12th rows. We defined a static variable $ firstCount in the second row, and the initial value is 0. Therefore, when the value is called in 12 rows, we use self to call the variable, and we use ":" In the middle to connect, which is our so-called domain operator. at this time, we call the static variable $ frestCount defined by the class, our static variables have nothing to do with the instance of the following object. they are only related to the class. so if I call the class itself, we cannot use this for reference. we can use self for reference, because self points to the class itself and has nothing to do with any object instance. In other words, we must also use self to call static members in our class.
?
(3) parent
We know that parent is a pointer to the parent class. generally, we use parent to call the constructor of the parent class.
?
Name = $ name ;}// class Person extends Animal of the derived class // The Person class inherits the Animal class {public $ personSex; // gender public $ personAge; // age // construct of the inherited class function _ construct ($ personSex, $ personAge) {parent ::__ construct ("heiyeluren "); // Use parent to call the constructor of the parent class $ this-> personSex = $ personSex; $ this-> personAge = $ personAge;} function printPerson () {print ($ this-> name. "is ". $ this-> personSex. ", this year ". $ this-> perso NAge) ;}}// instantiate the Person object $ personObject = new Person ("male", "21"); // execute the print $ personObject-> printPerson (); // output: heiyeluren is male, this year 21?>
? We should pay attention to the following details: the member attributes are all public, especially the parent class, to be accessed by the inheritance class through this. We should pay attention to the key points: row 25th: parent: _ construct ("heiyeluren"). In this case, we will use parent to call the constructor of the parent class to initialize the parent class, because the members of the parent class are all public, we can directly use this to call the class in the inheritance class.
?
?
?