首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

1.、public(公共成员)

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

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

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

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

2.、private (私有成员)

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

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

  class Fruit {

      private $name="水果";                          //设置私有变量

      public function setName($name){                     //设置共有变量的方法

          $this -> name =$name;

       }

       public function getName(){                         //读取私有变量

          return $this -> name;

       }

  }

  class MyFruit extends Fruit{}                         //继承父类Fruit

  $myfruit = new MyFruit ();

  $myfruit->setName("葡萄");                 //操作私有变量正确方法

  echo $myfruit->getName();

  echo Fruit::$name;                                 //操作私有变量错误方法

?>

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

葡萄

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类型的变量,参考代码:

  class Fruit {

      protected $name="葡萄";

  }

  class MyFruit extends Fruit{

      public function display(){

          echo "在子类中直接调用保护变量:". $this->name."";

      }

  }

  $myfruit=new MyFruit ();

  $myfruit->display();

  echo "其他地方调用包含变量就会报错:";

  $myfruit->$name="洗衣机";

?>

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

在子类中直接调用保护变量:葡萄

其他地方调用包含变量就会报错:

Warning: Undefined variable $name in D:\phpEnv\www\localhost\index.php on line 13

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ot7VFq08fy795nBATOeM_RrQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券