5

注意到一些关于 PHP 类的东西,我不知道它是否是一个错误或它为什么起作用,这是代码:

<?php
class A {
    private $prop = 'value';

    public function fun()
    {
        $obj = new A;
        $obj->echoProp();
    }

    private function echoProp()
    {
        echo 'Prop has value: '.$this->prop;
    }
}

$obj = new A;
$obj->fun();

结果不是我所期望的错误,因为我调用了一个私有方法(在 PHP 5.3.10-1ubuntu3.7 上使用 Suhosin-Patch 进行了测试)。结果是“道具有价值:价值”

4

2 回答 2

2

只要你在课堂上,你就可以在任何实例上调用你的类的私有方法。

于 2013-08-14T14:20:47.333 回答
2

在 php 文档http://www.php.net/manual/en/language.oop5.visibility.php#language.oop5.visibility-other-objects它说:

其他对象的可见性

相同类型的对象将可以访问彼此的私有成员和受保护成员,即使它们不是相同的实例。这是因为在这些对象内部时,特定于实现的细节是已知的。

所以这不是一个错误,而是 php 的一个想要的特性。

于 2013-08-14T14:22:29.293 回答