当前位置: 首页 > 后端技术 > PHP

教你如何直接访问php实例对象的private属性

时间:2023-03-29 14:45:46 PHP

在介绍重点部分之前,我们先来回顾一下php的面向对象的访问控制。对属性或方法的访问控制是通过在前面加上关键字public(公共)、protected(保护)或private(私有)来实现的。可以从任何地方访问定义为public的类成员。定义为受保护的类成员可以由其自身及其子类和超类访问。定义为私有的类成员只能由定义它们的类访问。类属性必须定义为public、protected或private之一。如果用var定义,它被认为是公共的。请看下面的示例代码(来自官方文档http://php.net/manual/en/lang...:public;echo$this->protected;echo$this->private;}}$obj=newMyClass();echo$obj->public;//工作cho$obj->protected;//致命错误cho$obj->private;//致命错误$obj->printHello();//显示公共、受保护和私有如上面代码所示,当我们使用类的实例对象访问类的private或protected成员属性时,会抛出致命错误,下面就是文章标题所做的,访问php实例对象的私有属性。按照我们正常的做法一般是写一个public方法,然后返回这个属性。publicfunctiongetPrivate(){return$this->private;}事实是我们应该这样做.下面只是一种特殊场景下的使用方法。希望大家在写代码的时候不要乱来。a='其他';var_dump($other->a);}}$aa=newA();$aa->test();如上面代码所示,我们新建了一个A对象,然后给这个实例的私有属性a赋值,并没有报错!解释:因为同一个类的对象即使不是同一个实例也可以访问彼此的private和protected成员。这是因为这些对象的内部实现细节是已知的。