詳細解讀PHP類的封裝

PHP類的封裝對於初學者來講是比較難懂的,在咱們學習這方面的知識以前,首先要講到的是PHP中的public、protected與private修飾符,可能在以前的代碼中你已經見識過public這個修飾符,可是咱們還並不懂這其中的奧祕,在接下來讓咱們看看吧。php

 

public:方法或者屬性在任何做用域均可以訪問到,並且這是默認的,若是沒有爲一個屬性或方法指定訪問修飾符,它將是public。apache

protected:方法或者屬性只能從類或者繼承類的一個成員中訪問到。安全

private:方法或者屬性只能從類的一個成員中訪問到,並且沒法從繼承類的成員中訪問到。通過private標記的方法或者屬性能夠在繼承類中從新定義。每個類只能看到它本身定義的私有方法。函數

這三個修飾符從做用範圍上來說應該像這樣從大到小排序:學習

public→protected→private之因此說是在做用範圍上是由於類跟咱們以前的函數同樣,把一些屬性和方法進行了PHP類的封裝。這個封裝就決定了數據的「可見性」了,這樣咱們在類的外面不可以隨意修改所定義的屬性和方法而只可以進行調用,這就是封裝的好處,同時也提升了安全性。爲了說明這幾個修飾符的做用,請看以下代碼:spa

 

  1. < ?php   
  2. class myClass{   
  3. public $public="Public";   
  4. protected $protected="Protected";   
  5. private $private="Private";   
  6. function say_Hello(){   
  7. //我如今什麼也不作,等下再告訴你   
  8. }   
  9. }   
  10. $obj=new myClass();   
  11. echo $obj->public;   
  12. //echo $obj->protected;   
  13. //echo $obj->private;   
  14. ?>   
  15. < ?php  
  16. class myClass{  
  17. public $public="Public";  
  18. protected $protected="Protected";  
  19. private $private="Private";  
  20. function say_Hello(){  
  21. //我如今什麼也不作,等下再告訴你  
  22. }  
  23. }  
  24. $obj=new myClass();  
  25. echo $obj->public;  
  26. //echo $obj->protected;  
  27. //echo $obj->private;  
  28. ?>   

 

經過運行以上示例咱們獲得一個「Public」,但當你把//echo $obj->private;的註釋去掉時,你會獲得一下以下的錯誤:Fatal error: Cannot access protected property myClass::$protected in E:\apache\htdocs\example\file.php on line 13。xml

能夠看到咱們不能隨意去訪問類的屬性定義,也就是咱們不能去修改PHP類的封裝中已經定義的一些操做,這就是可見性了。咱們在「外面」是不知道這個類中到底有那些成員,由於這些成員對於其餘的類多是不可見的。htm

固然若是咱們必定要訪問或者修改定義爲「私有」的屬性時,也可使用PHP所提供的系統方法:_get()和_set()。關於這個在之後再來了解,由於如今我對此也只是有個瞭解啦。排序

相關文章
相關標籤/搜索