一,this
1,要用this,你必有是一个对像的形势,不然它会报错的,Fatal error: Using $this when not in object context。
2,this可以调用本类中的方法和属性,也可以调用父类中的可以调的方法和属性
代码如下 | 复制代码 |
< ?php class UserName { //定义属性 private $name; //定义构造函数 function __construct( $name ) { $this->name = $name; //这里已经使用了this指针 } //析构函数 function __destruct(){} //打印用户名成员函数 function printName() { print( $this->name ); //又使用了PHP关键字this指针 } } //实例化对象 $nameObject = new UserName ( "heiyeluren" ); //执行打印 $nameObject->printName(); //输出: heiyeluren //第二次实例化对象 $nameObject2 = new UserName( "PHP5" ); //执行打印 $nameObject2->printName(); //输出:PHP5 ?> |
我 们看,上面的类分别在11行和20行使用了this指针,那么当时this是指向谁呢?其实this是在实例化的时候来确定指向谁,比如第一次实例化对象 的时候(25行),那么当时this就是指向$nameObject对象,那么执行18行的打印的时候就把print( $this-><name )变成了print( $nameObject->name ),那么当然就输出了"heiyeluren"。
二,self
self是指向类本身,也就是PHP self关键字是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。
1,self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。
2,用self时,可以不用实例化的
代码如下 | 复制代码 |
< ?php class Counter { //定义属性,包括一个静态变量 private static $firstCount = 0; private $lastCount; //构造函数 function __construct() { $this->lastCount = ++selft ::$firstCount; //使用PHP self关键字来调用静态变量,使用self 调用必须使用::(域运算符号) } //打印最次数值 function printLastCount() { print( $this->lastCount ); } } //实例化对象 $countObject = new Counter(); $countObject->printLastCount(); //输出 1 ?> |
三,parent
parent:: 可用于调用父类中定义的成员方法。
parent::的追溯不仅于直接父类。
通过parent::调用父类方法
代码如下 | 复制代码 |
<!-- 声明一个员工类,经理类继承自员工类 --> <? class employee{ protected $sal=3000; public function getSal(){ $this->sal = $this->sal + 1200; return $this->sal ; } } class Manager extends employee { $manager = new Manager(); |
parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。