phpオブジェクト向けダイナミックバインドと静的バインドの理解について


   
   
   
   
  1. /*  php  */ 
  2.  
  3. // 1, public  protected  private   
  4.      
  5. // eg: private  
  6. class User 
  7.     private $name = "wxp"
  8.     private function setName($name
  9.     { 
  10.         if(isset($this->name)) 
  11.         { 
  12.             $this->name = $name
  13.         } 
  14.     } 
  15. class sUser extends User 
  16.      
  17. $sUser = new sUser(); 
  18. // print_r($sUser->name); //   : private  
  19.  
  20. // 2,  
  21.     //  , : , , , 。 
  22.     //  private  
  23.  
  24. class Users 
  25.     protected function isPassed() 
  26.     { 
  27.         return false; 
  28.     } 
  29.     public function delUsers() 
  30.     { 
  31.         if(!$this->isPassed()) 
  32.         { 
  33.             print('error'); 
  34.             return false; 
  35.         } 
  36.         else 
  37.         { 
  38.             print("ok"); 
  39.         } 
  40.     } 
  41. class PassUsers extends Users 
  42.     protected function isPassed() 
  43.     { 
  44.         return true; 
  45.     } 
  46.  
  47. $users = new Users(); 
  48. $passusers = new PassUsers(); 
  49. // $users->delUsers();   //echo :error 
  50. // $passusers->delUsers();   //echo : ok 
  51.  
  52. // 3        
  53.     // private  , , , , isPassed 。 
  54.  
  55. class Users_ 
  56.     private function isPassed() 
  57.     { 
  58.         return false; 
  59.     } 
  60.     public function delUsers() 
  61.     { 
  62.         if(!$this->isPassed()) 
  63.         { 
  64.             print('error'); 
  65.             return false; 
  66.         } 
  67.         else 
  68.         { 
  69.             print("ok"); 
  70.         } 
  71.     }    
  72. class PassUsers_ extends Users_ 
  73.     private function isPassed() 
  74.     { 
  75.         return true; 
  76.     } 
  77. $users_ = new Users_(); 
  78. $passusers_ = new PassUsers_(); 
  79. $users_->delUsers();   //echo :error 
  80. $passusers_->delUsers();   //echo : error