详细解读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()。关于这个在之后再来了解,由于如今我对此也只是有个了解啦。排序

相关文章
相关标签/搜索