【发布时间】:2010-12-19 05:14:10
【问题描述】:
一个对象的方法应该能够访问同一类的另一个对象的受保护属性吗?
我正在用 PHP 编码,我刚刚发现对象的受保护属性允许被同一类的方法访问,即使不是同一对象。
在示例中,首先,您将在输出中得到“3” - 因为函数 readOtherUser 将成功访问该值 - 之后将发生 PHP 致命错误 - 因为主程序将无法访问相同的值。
<?php
class user
{
protected $property = 3;
public function readOtherUser ()
{
$otherUser = new user ();
print $otherUser->property;
}
}
$user = new user ();
$user->readOtherUser ();
print $user->property;
?>
这是一个 PHP 错误还是预期的行为(我将不得不重新学习这个概念...... :))(并且有参考事实)?在其他编程语言中是如何实现的?
谢谢!
【问题讨论】:
-
注意。 Ruby 的
private的行为与描述的一样——不能在不同的实例上调用私有方法。
标签: php class object instance visibility