PHP物件導向 – 封裝

來源:互聯網
上載者:User

標籤:info   this   prot   png   string   inf   成員方法   技術   其他   

封裝:
 封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者對象操作,對不可信的進行資訊隱藏。

上面的操作是靠以下存取控制符號來實現,規定了自身許可權,使有的人能訪問,有的人不能訪問

常式:

[php] view plain copy  
  1. <span style="font-size:18px;"><?php  
  2. class Person{  
  3.     public   $name;  
  4.     private  $age;  
  5.     private  $salary;  
  6.     function  __construct($name,$age,$salary){  
  7.         $this->name=$name;  
  8.         $this->age=$age;  
  9.         $this->salary=$salary;  
  10.     }  
  11. }  
  12. $a1=new Person("小明",32,5000);  
  13. //正確顯示,全域屬性訪問沒有限制  
  14. echo "<br>".$a1->name."<br>";  
  15. //報錯,私人屬性不能在類外訪問  
  16. //echo "<br>".$a1->age."<br>";   
  17. //報錯,私人屬性不能在類外訪問  
  18. //echo "<br>".$a1->salary."<br>";  
  19. ?></span>  


php提供了三種存取控制符號來控制方法和屬性(變數)的存取權限.

1. public  表示全域,可以在本類,類外部,子類 中使用
2. protected 表示受到保護, 可以在本類, 子類中使用,不能在類外使用n
3. private 表示私人, 只能在本類中使用,不能在類外使用,即在其他地方new了本類,也不能調用該方法


這三個控制修飾符號可以對 屬性 和 方法進行修飾
1.  如果一個方法沒有存取修飾詞,則預設是public

2.  屬性  必須指定存取修飾詞,若沒有存取修飾詞,會報錯。

3. 私人方法前面最好加底線,如:private function _save(){}


//方法之間可以互相調用. 但是需要使用 $this引用 
function test11()
{
$this->test12();
}
protected function test12()
{
echo "test12 hello";
}

舉例說明:

 

[php] view plain copy  
  1. <?php  
  2. class Person1{  
  3.     public $name;  
  4.     protected  $age;  
  5.     private  $salary;  
  6.   
  7.   
  8.     function __construct($name,$age,$salary){  
  9.         $this->name=$name;  
  10.         $this->age=$age;  
  11.         $this->salary=$salary;  
  12.     }  
  13.   
  14.   
  15.     //成員方法  
  16.     public function showInfo(){  
  17.         //這裡說明在本類中可以使用 public protected 和private 修飾的變數.  
  18.         echo $this->name."||".$this->age."||".$this->salary;  
  19.     }  
  20.     function test(){  
  21.         //調用showInfo()方法,利用this引用  
  22.         $this->showInfo();  
  23.     }  
  24. }  
  25. //建立一個人  
  26. $p1=new Person1("孫悟空",30,1000);  
  27. $p1->test();  
  28. ?>  

 

 

若想在類外去訪問protected 變數或者 private 變數, 通常的做法是在類中建立 public 方法去訪問 這些變數. 形式是
public function setXxx($val){
}
public function getXxx(){
}
public function showInfo(){
}

 

舉例說明:

 

[php] view plain copy  
    1. <?php  
    2. class Person2{  
    3.     public $name;  
    4.     protected  $age;  
    5.     private  $salary;  
    6.   
    7.     function __construct($name,$age,$salary){  
    8.         $this->name=$name;  
    9.         $this->age=$age;  
    10.         $this->salary=$salary;  
    11.     }  
    12.   
    13.     //成員方法  
    14.     public function showInfo(){  
    15.         //這裡說明在本類中可以使用 public protected 和private 修飾的變數.  
    16.         echo "<br>".$this->name."||".$this->age."||".$this->salary;  
    17.     }  
    18. }  
    19. //建立一個人  
    20. $p1=new Person2("豬八戒",20,5000);  
    21. //訪問其詳細資料,由於屬性age和salary分別為保護和私人變數,若在類外直接存取  
    22. //其屬性會報錯,但在類中建立一個公用屬性的函數,通過函數即可訪問這些變數。  
    23. $p1->showInfo();       
    24. ?>  

PHP物件導向 – 封裝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.