• PHP8的数据封装(数据隐藏)-PHP8知识详解


    面向对象的特点之一就是封装性,也就是数据封装,也被称为数据隐藏

    php8通过限制访问权限来实现数据的封装性,这里用到了publicprivateprotectedstaticfinal几个关键字。下面来介绍前3个。 

    Image

    1.、public(公共成员)

    public 为公有类型,在程序的任何位置都可以被调用。常用的调用方法有以下三种。

    (1)、在类内通过self::属性名(或方法名)调用自己类的public 方法或属性。

    (2)、在子类中通过parent::方法名调用父类方法。

    (3)、在实例中通过$obj->属性名(或方法名)调用public类型的方法或属性。

    2.、private (私有成员)

    private 为私有类型,表示只能在类的内部进行访问和使用。

      定义 private 类型的变量,参考代码:                                                                                                              

    1.     class Fruit {
    2.         private $name="水果";                          //设置私有变量
    3.         public function setName($name){                     //设置共有变量的方法
    4.             $this -> name =$name;
    5.          }
    6.          public function getName(){                         //读取私有变量
    7.             return $this -> name;
    8.          }
    9.     }
    10.     class MyFruit extends Fruit{}                         //继承父类Fruit
    11.     $myfruit = new MyFruit ();
    12.     $myfruit->setName("葡萄");                 //操作私有变量正确方法
    13.     echo $myfruit->getName();
    14.     echo Fruit::$name;                                 //操作私有变量错误方法
    15. ?>

    以上代码在PHP8中的运行结果如下:

    1. 葡萄
    2. Fatal error: Uncaught Error: Cannot access private property Fruit::$name in D:\phpenv\www\localhost\index.php:15 Stack trace: #0 {main} thrown in D:\phpEnv\www\localhost\index.php on line 15

    3、protected(保护成员)

    protected 为受保护类型,常用的调用方法有以下三种。

    (1)、在类内通过self::属性名(或方法名)调用自己类的public 方法或属性。

    (2)、在子类中通过parent::方法名调用父类方法。

    (3)、在实例中通过$obj->属性名(或方法名)调用public类型的方法或属性。

    private关键字可以将数据完全隐藏起来,除了在本类,其他地方都不可以调用,子类也不可以调用。对于有些变量希望子类能够调用,但对另外的类来说,还要做到封装。这时,就可以使用protected关键字。

    定义protected类型的变量,参考代码:

    1.     class Fruit {
    2.         protected $name="葡萄";
    3.     }
    4.     class MyFruit extends Fruit{
    5.         public function display(){
    6.             echo "在子类中直接调用保护变量:". $this->name."
      "
      ;
    7.         }
    8.     }
    9.     $myfruit=new MyFruit ();
    10.     $myfruit->display();
    11.     echo "其他地方调用包含变量就会报错:";
    12.     $myfruit->$name="洗衣机";
    13. ?>

    以上代码在PHP8的运行结果为:

    1. 在子类中直接调用保护变量:葡萄
    2. 其他地方调用包含变量就会报错:
    3. Warning: Undefined variable $name in D:\phpEnv\www\localhost\index.php on line 13

    到此为止,PHP8的数据封装(数据隐藏)的3个知识点:public(公共成员).、private (私有成员)、protected(保护成员)的相关知识就讲解完毕了。

  • 相关阅读:
    Vite+Vue3创建项目案例
    EM@平面直线方程和直线位置关系判定条件
    【C# 基础精讲】try-catch语句块
    Spring-事务
    常见高级语言的输入与输出训练(一)
    Java注解详解和自定义注解实战,用代码讲解
    uqrcode+uni-app 微信小程序生成二维码
    【Linux 基础笔记】(一)
    Elastic认证考试过程(2022.11.13 06:15)
    基于SSM+Jsp的书店仓库管理系统
  • 原文地址:https://blog.csdn.net/u010292470/article/details/133365511