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

    时间: 浏览:881次  原文出处:PHP服务网 
导读:面向对象的特点之一就是封装性,也就是数据封装,也被称为数据隐藏。 php8通过限制访问权限来实现数据的封装性,这里用到了public、private、protected、static和final几个关键字。下面来介绍前3个。

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

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


1.、public(公共成员)

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

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

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

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

2.、private (私有成员)

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

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

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

<?php
    class Fruit {
        protected $name="葡萄";
    }
    class MyFruit extends Fruit{
        public function display(){
            echo "在子类中直接调用保护变量:". $this->name."<br />";
        }
    }
    $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://www.olzz.com/php8deshujufengzhuang.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

面向对象编程的几个问题总结-PHP8知识详解

导读:面向对象编程的几个问题总结:1、类和对象的关系?2、方法与函数的区别?3、静态变量越多越好吗?4、抽象类和类有何不同?

2023-10-07  分类:PHP学堂  浏览:977次


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

导读:面向对象的特点之一就是封装性,也就是数据封装,也被称为数据隐藏。 php8通过限制访问权限来实现数据的封装性,这里用到了public、private、protected、static和final几个关键字。下面来介绍前3个。

2023-09-27  分类:PHP学堂  浏览:882次


认识面向对象-PHP8知识详解

导读:面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。

2023-09-16  分类:PHP学堂  浏览:815次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:1729次