好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中this,parent,self关键字用法 - php面向对象

php中this,parent,self关键字用法

this,parent,self都是在php中的class类中了,下面我来分别介绍this,parent,self在类中用应用与区别。

一,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 {    //如果想让经理在员工工资的基础上多发1500元.     //必须先调用父类的getSal()方法.     public   function  getSal(){      parent::getSal(); // 这里调用了父类的方法.      $this ->sal =  $this ->sal + 1500;       return   $this ->sal ;   }   }  $emp  =  new  employee();  echo   "普通员工的工资是 "  .  $emp ->getSal();  echo   "<br>" ;    $manager  =  new  Manager();  echo   "经理的工资是: "  .  $manager ->getSal();  ?> 

parent是指向父类的指针,一般我们使用parent来调用父类的构造函数.

查看更多关于php中this,parent,self关键字用法 - php面向对象的详细内容...

  阅读:38次