Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86352
  • 博文数量: 13
  • 博客积分: 384
  • 博客等级: 一等列兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-20 09:16
文章分类

全部博文(13)

文章存档

2011年(13)

最近访客

分类: 系统运维

2011-05-23 10:47:19

原出处:
http://wangxp.blog.51cto.com/2803240/506406
  1. /* 关于php面向对象动态绑定和静态绑定的理解 */ 
  2.  
  3. // 1,理解public  protected  private 访问级别 
  4.      
  5. // eg:视图继承父类private级别的属性和方法 
  6. class User 
  7. { 
  8.     private $name = "wxp"; 
  9.     private function setName($name) 
  10.     { 
  11.         if(isset($this->name)) 
  12.         { 
  13.             $this->name = $name; 
  14.         } 
  15.     } 
  16. } 
  17. class sUser extends User 
  18. { 
  19.      
  20. } 
  21. $sUser = new sUser(); 
  22. // print_r($sUser->name); //  输出:未能访问到父类private属性 
  23.  
  24. // 2,动态绑定 
  25.     // 继承时会发生动态绑定,即:子类复写父类的方法或成员,当该方法或成员被调用时,会判断调用其的实例,是属于哪个类的实例就调用谁的。 
  26.     // 注意该成员或方法的访问级别若是private则会发生静态绑定 
  27.  
  28. class Users 
  29. { 
  30.     protected function isPassed() 
  31.     { 
  32.         return false; 
  33.     } 
  34.     public function delUsers() 
  35.     { 
  36.         if(!$this->isPassed()) 
  37.         { 
  38.             print('error'); 
  39.             return false; 
  40.         } 
  41.         else 
  42.         { 
  43.             print("ok"); 
  44.         } 
  45.     } 
  46. } 
  47. class PassUsers extends Users 
  48. { 
  49.     protected function isPassed() 
  50.     { 
  51.         return true; 
  52.     } 
  53. } 
  54.  
  55. $users = new Users(); 
  56. $passusers = new PassUsers(); 
  57. // $users->delUsers();   //echo :error 
  58. // $passusers->delUsers();   //echo : ok 
  59.  
  60. // 3 模拟静态绑定      
  61.     // private 级别的成员或方法只属于当前类,父类,所以即使子类重写,他几经在父类编译时期静态绑定,不会调用子类重写的isPassed方法。 
  62.  
  63. class Users_ 
  64. { 
  65.     private function isPassed() 
  66.     { 
  67.         return false; 
  68.     } 
  69.     public function delUsers() 
  70.     { 
  71.         if(!$this->isPassed()) 
  72.         { 
  73.             print('error'); 
  74.             return false; 
  75.         } 
  76.         else 
  77.         { 
  78.             print("ok"); 
  79.         } 
  80.     }    
  81. } 
  82. class PassUsers_ extends Users_ 
  83. { 
  84.     private function isPassed() 
  85.     { 
  86.         return true; 
  87.     } 
  88. } 
  89. $users_ = new Users_(); 
  90. $passusers_ = new PassUsers_(); 
  91. $users_->delUsers();   //echo :error 
  92. $passusers_->delUsers();   //echo : error

阅读(1363) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:PHP魔术方法汇总

给主人留下些什么吧!~~