通过前边的的学习我们已经了解了如何去定义一个类,如何由一个定义好的类实例化出对象与使用该对象中的成员。我们知道要在外部调用一个对象的某个成员用的是” $对象名 -> 成员名 “这样的语法,那么如果对象本身要引用到对象本身的成员,如何从对象内部来调用一个对象的成员呢。这就要用到我们的特殊引用 $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->radius . "
";
}
在 $c1,$c2,$c3 三个对象中都有 getGirth() 这个方法,在外部调用这个方法时,方法内部 $this->radius 调用的是 $c1,$c2,$c3 对象自身的 radius,并打印相应的结果。当然你也可以试试在实例化若干个对象后赋上不同的半径长度,再调用 getArea() 方法并打印,这里就不做演示了,大家自己动手丰衣足食哈。
发表回复