首页 > 解决方案 > 为什么我可以在 PHP 中访问深度克隆类中的私有属性?

问题描述

对于我正在做的事情,这实际上很好,但我想知道我如何能够访问深度克隆的私有属性$this。就因为我还在同一个班吗?

class Handler
{
    /** private property **/
    private $stuff;

    /** deep clone **/
    public function __clone()
    {
        $this->stuff = clone $this->stuff;
    }

    /** able to access private property **/
    public function handle()
    {
        $handler = clone $this;
        var_dump($handler->stuff); 
    }
}

根据我对深度克隆的理解,我正在内存中创建一个完全独立的对象或“条目”,因此$handler$stuff并没有在内存中的同一位置引用。即使stuff是私人的,我仍然从var_dump().

我在Zend Stratigility第 77 行发现了这个概念。

标签: phpoopclonedeep-copyprivate-members

解决方案


推荐阅读