我无法取消继承的私有变量;即使是反思

时间:2017-02-14 21:03:59

标签: php

class A
{
    private $a;
}

class B extends A
{
    function __construct()
    {
        (new \ReflectionClass($this))->getProperty('a')->setAccessible(true);
        unset($this->a); // fatal error
    }
}

(new B());

虽然我确实更改了辅助功能

,但会触发致命错误

1 个答案:

答案 0 :(得分:1)

不,不,你不能。对于$a的实例,class A在符号表中仅存在 ,但new B为您提供了class B的实例。从您的对象new B的角度来看,$a根据定义并不存在:因此unset($this->a) 事实上不可能。