7. The use of special reference "$this"
Now we know how to access the members in the object, which is accessed through the "Object->Members" method, which is outside the object
part to access the members in the object, then if I want to let the method in the object access the properties of this object inside the object, or
is the method in the object to call other methods of this object, then how do we manage? Because all members in the object must be called using objects, including calls between internal members of the object, PHP provides me with a reference to this object $this,
each object There is an object reference $this to represent the object and complete the call of the internal members of the object. The original meaning of this is
"this". In the above example, we instantiate three instance objects $P1, $ P2, $P3, each of these three objects
has its own $this, which represents the objects $p1, $p2, and $p3 respectively.
We can see from the above figure that $this is the reference that represents the object inside the object. The method used to call the
members of this object inside the object and the members of the object outside the object is the same.
$this->属性$this->name; $this->age; $this->sex; $this->方法$this->say(); $this->run();
<?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; }f unction run() //这个人可以走路的方法 { echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name="张三"; $p1->sex="男"; $p1->age=20; //下面访问$p1对象中的说话方法 $p1->say(); //下面三行是给$p2对象属性赋值 $p2->name="李四"; $p2->sex="女"; $p2->age=30; //下面访问$p2对象中的说话方法 $p2->say(); //下面三行是给$p3对象属性赋值 $p3->name="王五"; $p3->sex="男"; $p3->age=40; //下面访问$p3对象中的说话方法 $p3->say(); ?>
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40
function say() //这个人可以说话的方法 { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; }
attribute and print out the value of the attribute. This is the way to access the object's properties inside the object. If you call
the say() method, you can also use the run() method. In say () This method uses $this->run() to complete the call.
8. Constructor and destructor methods
Most classes have a special method called a constructor. When an object is created, it will automatically call the constructor, that is, the constructor will be automatically called when the new keyword is used to instantiate the object.
The declaration of the constructor is the same as the declaration of other operations, except that its name must be __construct(). This is a change in PHP5. In
previous versions, the name of the constructor must be the same as the class name. This can still be used in PHP5, but now few
people use it. Do this The advantage is that the constructor can be made independent of the class name. When the class name changes, there is no need to change the corresponding constructor
name. For backward compatibility, if there is no method named __construct() in a class, PHP will search for a constructor method written in php4 with the same name as the class name.
Format:
function __construct ( [参数] ) { ... ... }
<? //创建一个人类 class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为姓名$name、性别$sex和年龄$age function __construct($name, $sex, $age) { //通过构造方法传进来的$name给成员属性$this->name赋初使值 $this->name=$name; //通过构造方法传进来的$sex给成员属性$this->sex赋初使值 $this->sex=$sex; //通过构造方法传进来的$age给成员属性$this->age赋初使值 $this->age=$age; }/ /这个人的说话方法 function say() { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; } } //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 $p1=new Person(“张三”,”男”, 20); $p2=new Person(“李四”,”女”, 30); $p3=new Person(“王五”,”男”, 40); //下面访问$p1对象中的说话方法 $p1->say(); //下面访问$p2对象中的说话方法 $p2->say(); //下面访问$p3对象中的说话方法 $p3->say(); ?>
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40
Destructor:
The opposite of the constructor is the destructor. The destructor is a newly added content of PHP5. There is no destructor in PHP4.
The destructor will delete all references to an object or Executed when the object is explicitly destroyed, that is, the destructor is called before the object
is destroyed in memory. Similar to the name of the constructor, the name of a class's destructor must be __destruct(). Destruction
The function cannot take any parameters.
Format:
function __destruct ( ) { ... ... }
<? //创建一个人类 class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为姓名$name、性别$sex和年龄$age function __construct($name, $sex, $age) { //通过构造方法传进来的$name给成员属性$this->name赋初使值 $this->name=$name; //通过构造方法传进来的$sex给成员属性$this->sex赋初使值 $this->sex=$sex; //通过构造方法传进来的$age给成员属性$this->age赋初使值 $this->age=$age; } //这个人的说话方法 function say() { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; } //这是一个析构函数,在对象销毁前调用 function __destruct() { echo “再见”.$this->name.”<br>”; } //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 $p1=new Person(“张三”,”男”, 20); $p2=new Person(“李四”,”女”, 30); $p3=new Person(“王五”,”男”, 40); //下面访问$p1对象中的说话方法 $p1->say(); //下面访问$p2对象中的说话方法 $p2->say(); //下面访问$p3对象中的说话方法 $p3->say(); ?>
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40 再见张三 再见李四 再见王五