似乎一个类的不同实例可以知道彼此的私有(private)成员变量。
我提供了一些代码来尝试展示我的问题,我将尝试对其进行解释。
我们有一个带有私有(private)成员变量的类,$hidden
。 modifyPrivateMember
将 $hidden
的值设置为 3
。 accessPrivateMember
将一个Object
作为参数并访问它的private $hidden
成员 以返回它的值。
示例代码:
<?php
// example.php
class Object {
private $hidden;
public function modifyPrivateMember() {
$this->hidden = 3;
}
public function accessPrivateMember(Object $otherObject) {
return $otherObject->hidden;
}
}
$firstObject = new Object;
$firstObject->modifyPrivateMember();
$otherObject = new Object;
echo $otherObject->accessPrivateMember($firstObject);
以上代码的输出:
$ php example.php
3
谁能解释为什么同一类的其他实例可以访问对象的私有(private)成员?这种表面上违反范围的行为是否有正当理由?
最佳答案
private
意味着它仅限于那个类,而不仅仅是那个对象。
关于PHP 范围和类实例交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296224/