zoukankan      html  css  js  c++  java
  • 详细解读PHP类的封装

    [导读] public:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。protected:方法或者属性只能从类或者继承类的一个成员中访问到。private:方法或者属  

    public:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。

    protected:方法或者属性只能从类或者继承类的一个成员中访问到。

    private:方法或者属性只能从类的一个成员中访问到,而且无法从继承类的成员中访问到。经过private标记的方法或者属性可以在继承类中重新定义。每一个类只能看到它自己定义的私有方法。

    这三个修饰符从作用范围上来讲应该像这样从大到小排序:

    public→protected→private之所以说是在作用范围上是因为类跟我们之前的函数一样,把一些属性和方法进行了PHP类的封装。这个封装就决定了数据的“可见性”了,这样我们在类的外面不能够随意修改所定义的属性和方法而只能够进行调用,这就是封装的好处,同时也提高了安全性。为了说明这几个修饰符的作用,请看如下代码:

    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:apachehtdocsexamplefile.php on line 13。

    可以看到我们不能随意去访问类的属性定义,也就是我们不能去修改PHP类的封装中已经定义的一些操作,这就是可见性了。我们在“外面”是不知道这个类中到底有那些成员,因为这些成员对于其他的类可能是不可见的。

    当然如果我们一定要访问或者修改定义为“私有”的属性时,也可以使用PHP所提供的系统方法:_get()和_set()。关于这个在以后再来了解,因为现在我对此也只是有个了解啦。  

  • 相关阅读:
    6-4.粗体标签
    [Unity3D] 如何实现点击按钮退出游戏
    [Unity3D] 载入游戏地图时背景图片随机切换 & 数字百分比进度条
    [Unity3D] 鼠标点击图片移动效果
    [3DMAX]如何将骨骼与模型绑定在一起(蒙皮) & 如何实现自动化人物模型蒙皮
    [Unity 3D]用鼠标滚轮实现镜头放大和缩放,并添加距离限制
    [Unity3D] 如何实现围绕旋转
    [Unity3D] 如何实现注视旋转
    Css 图片自适应
    Scss 定义内层class的简单写法
  • 原文地址:https://www.cnblogs.com/zouyajun/p/3734402.html
Copyright © 2011-2022 走看看