代码改变世界

特殊的引用“$this“的使用

2011-06-14 13:51  卫佳  阅读(220)  评论(0编辑  收藏  举报

现在我们知道了如何访问对象中的成员,是通过”对象->成员”的方式访问的,这是在对象的外部去访问对象中成员的形式, 那么如果我想在对象的内部,让对象里的方法访问本对象的属性, 或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP里面给我提供了一个本对象的引用$this, 每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用, this的本意就是“这个”的意思, 上面的实例里面,我们实例化三个实例对象$P1、 $P2、 $P3,这三个对象里面各自存在一个$this分别代表对象$p1、$p2、$p3 。

$this->属性    $this->name;              $this->age;     $this->sex;

              $this->方法      $this->say();              $this->run();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:

<?php

    class Person

    {

        //下面是人的成员属性

        var $name;  //人的名子Wholesale Discount Sunglasses

        var $sex;    //人的性别Wholesale designer sunglasses

        var $age;    //人的年龄China sunglasses supplier

        //下面是人的成员方法

        function say()  //这个人可以说话的方法

        {

        echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

        }      

        function run()  //这个人可以走路的方法

        {

            echo "这个人在走路";

        }      

    }

    $p1=new Person();  //创建实例对象$p1Reading Glasses with Case

    $p2=new Person();  //创建实例对象$p2WenZhou Sunglasses

    $p3=new Person();  //创建实例对象$p3YiWu Sunglasses

    //下面三行是给$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()  //这个人可以说话的方法Polarized Sunglasses Wholesale

{

    echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

}      

在$p1、$p2和$p3这三个对象中都有say()这个方法,$this分别代表这三个对象, 调用相应的属性,打印出属性的值,这就是在对象内部访问对象属性的方式, 如果相在say()这个方里调用run()这个方法也是可以的,在say()这个方法中使用$this->run()的方式来完成调用。