码迷,mamicode.com
首页 > Web开发 > 详细

php之self与parent

时间:2015-05-27 11:38:06      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

  self:本类,注意不要理解为本对象

  parent:父类

  在引用自身的静态属性/静态方法时,以及父类的静态属性/方法时可以用到  

  用法

  self::$StaticProperty

  self::StaticMethod

  parent::$StaticProperty

  parent::StaticMethod

  比如

 1 <?php
 2 class Human{
 3     static public $head = 1;
 4     public function say(){
 5         echo self::$head,‘<br />‘;
 6     }
 7     public function hi(){
 8         echo ‘hello<br />‘;
 9     }
10 }
11 class Stu extends Human{
12     static public $head = 2;
13     public function say(){
14         echo self::$head,‘<br />‘;
15         echo parent::$head,‘<br />‘;
16     }
17     public function hi(){
18         parent::hi();
19     }
20 }
21 echo Human::$head,‘<br />‘;
22 $lisi = new Human();
23 $lisi->say();
24 
25 $ming = new Stu();
26 $ming->say();
27 $ming->hi();
28 
29 //用$this,还是用parent
30 class a{
31     public function a1(){
32         echo ‘this is class function a1()<br />‘;
33     }
34 }
35 class b extends a{
36     public function b1(){
37          $this->a1();
38     }
39     public function b2(){
40         parent::a1();
41     }
42 }
43 $a = new a();
44 $b = new b();
45 $b->b1();
46 $b->b2();
47 /****
48 上面2个调用,显示效果是一样的
49 如果从速度角度上看,理论上parent::快一点
50 因为$this在子类寻找a1方法,找不到,再去其父类找
51 
52 但是从面向对象角度看,继承过来的,就是自己的
53 $this更符合面向对象的思想
54 
55 举一个反例
56 class a{
57 }
58 
59 class b extends a{
60 }
61 
62 class c extends b{
63 }
64 ...
65 ...
66 class f extends e{
67     parent::parent::parent::
68     总不能这么写,当然要访问父类的private属性就要用到parent::
69 }
70 ****/
71 ?>

 

php之self与parent

标签:

原文地址:http://www.cnblogs.com/museluo/p/4532736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!