【发布时间】:2015-03-13 08:54:23
【问题描述】:
如果我有一个公共类方法返回对不可见(私有或受保护)属性的引用,我可以使用该引用来获得直接访问:
PHP 代码
class A
{
private $property = 'orange';
public function &ExposeProperty()
{
return $this->property;
}
public function Output()
{
echo $this->property;
}
}
$obj = new A();
# prints 'orange'
$obj->Output();
$var = &$obj->ExposeProperty();
$var = 'apple';
# prints 'apple'
$obj->Output();
PHP 中的这个功能背后有什么原因吗?还是只是设计疏忽,未能通过引用跟踪访问违规?
当您想要实现以下目标时,它显然会派上用场:
PHP 代码
$this->load->resource();
其中load 是一个修改$this 的给定属性的对象。但除了这个快捷方式之外,我看不到许多可能的用途,否则这些用途是有效的 OOP 模式所无法实现的。
【问题讨论】:
-
如果你使用参考文献(更糟糕的是),你应该得到你所得到的:P