background image

//执行打印

$obj2

->printname(); 

//输出:PHP

?>
 

 

说明:上面的类分别在 语句①和语句②使用了 this 指针,那么当时 this 是指向谁呢?其
实 this 是在实例化的时候来确定指向谁,比如第一次实例化对象的时候(语句③),那么当
时 this 就是指向

$obj1

对象,那么执行语句②的打印时就把

print

$this

-><name ) 变成了

 

print

(

$obj1t

->name ),那么当然就输出了"PBPHome"。第二个实例的时候,

print

(

$this

-

>name )变成了

print

$obj2

->name),于是就输出了"PHP"。所以说,this 就是指向当前对象

实例的指针,不指向任何其他对象或类。
 
{二}PHP 中 this,self,parent 的区别之二 self 篇
此篇我们就 self 的用法进行讲解
首先我们要明确一点,self 是指向类本身,也就是 self 是不指向任何已经实例化的对象,
一般 self 使用来指向类中的静态变量。假如我们使用类里面静态(一般用关键字

static

)的

成员,我们也必须使用 self 来调用。还要注意使用 self 来调用静态变量必须使用:: (域运算
符号),见实例。
代码如下::
 
<?php
classcounter 

//定义一个 counter 的类

{

//定义属性,包括一个静态变量$firstCount,并赋初值 0 

 

语句①

private

 

static

 

$firstCount

 = 0;

private

 

$lastCount

;

//构造函数

function

 __construct()

{

$this

->lastCount =++self::

$firstCount

//使用 self

 

来调用静态变量 语句②

}

//打印 lastCount 数值

function

 printLastCount()

{

print

$this

->lastCount );

}
}

//实例化对象

$obj

 = 

new

 Counter();

$obj

->printLastCount(); 

//执行到这里的时候,程序输出 1

?>
 
这里要注意两个地方语句①和语句②。我们在语句①定义了一个静态变量

$firstCount

,那