通过前边的的学习我们已经了解了如何去定义一个类,如何由一个定义好的类实例化出对象与使用该对象中的成员。我们知道要在外部调用一个对象的某个成员用的是” $对象名 -> 成员名 “这样的语法,那么如果对象本身要引用到对象本身的成员,如何从对象内部来调用一个对象的成员呢。这就要用到我们的特殊引用 $this

让我们来回顾一下第二章的例子:

<!--?php 

class circle {

    var $radius;

    function getGirth() {
        echo 2 * 3.14 * $this->radius;
    }

    function getArea() {
        echo 3.14 * $this->radius * $this->radius;
    }

}

?-->

从上面的例子我们可以知道:

  • $this 引用写在类里面
  • $this 的使用方法与在外部调用对象成员的方法相似都是 $this->成员名

因此,我们可以分析出 $this 的一些性质:

  • 因为由类实例化出来的每个对象都是独立的,所以每个对象的 $this 都是不一样的,$this 指向该对象本身,$this 就是对象内部代表这个对象的引用
  • $this 的使用方法与其他外部引用相同

我们来扩展一下上文的圆类作为例子来具体说明:

<!--?php 

class circle {

    var $radius;

    function getGirth() {
        echo 2 * 3.14 * $this->radius;
    }

    function getArea() {
        echo 3.14 * $this->radius * $this->radius;
    }

}

//实例化三个圆对象 $c1,$c2,$c3
$c1 = new circle();
$c2 = new circle();
$c3 = new circle();

//分别给$c1,$c2,$c3赋予不同的半径长度
$c1->radius = 1;
$c2->radius = 2;
$c3->radius = 3;

//输出各自的周长
echo "The grith of c1 is ";
$c1->getGirth();
echo "The grith of c2 is ";
$c2->getGirth();
echo "The grith of c3 is ";
$c3->getGirth();

?-->

输出的结果为:

The grith of c1 is 6.28
The grith of c2 is 12.56
The grith of c3 is 18.84

下面让我来分析一下这个方法(函数):

function getGirth() {
echo 2 * 3.14 * $this-&gt;radius . "
";
}

在 $c1,$c2,$c3 三个对象中都有 getGirth() 这个方法,在外部调用这个方法时,方法内部 $this->radius 调用的是 $c1,$c2,$c3 对象自身的 radius,并打印相应的结果。当然你也可以试试在实例化若干个对象后赋上不同的半径长度,再调用 getArea() 方法并打印,这里就不做演示了,大家自己动手丰衣足食哈。