PHP:更改变量范围

PHP:更改变量范围,php,class,scope,Php,Class,Scope,是否可以在另一个类中将变量的访问权限从public更改为protected。 在我看来,这是不可能的,根据我的一点知识,但我希望有人谁的PHP专家可以帮助我发现这是真的吗 class A { var $myvar; } Class B { function __Construct() { $A = new A(); // Can I change scope of $A->myvar to protected? } } 可

是否可以在另一个类中将变量的访问权限从public更改为protected。 在我看来,这是不可能的,根据我的一点知识,但我希望有人谁的PHP专家可以帮助我发现这是真的吗

class A
{
    var $myvar;
}

Class B
{
    function __Construct()
    {
        $A = new A();
        // Can I change scope of $A->myvar to protected?
    }
}

可能不是最好的方法,但它可以满足您的需要:

class A
{
    protected $myvar;
    protected $isMyVarPublic;

    function __construct($isMyVarPublic = true)
    {
        $this->isMyVarPublic = $isMyVarPublic;
    }

    function getMyVar()
    {
        if (!$this->isMyVarPublic) {
            throw new Exception("myvar variable is not gettable");
        }
        return $this->myvar;
    }

    function setMyVar($val)
    {
        if (!$this->isMyVarPublic) {
            throw new Exception("myvar variable is not settable");
        }
        $this->myvar = $val;
    }
}

class B
{
    function __construct()
    {
        $A = new A(false);
    }
}

非常感谢你!是否可以直接从
B类
更改范围?我想隐藏
类A的所有更改
。我不知道这一点,但不扩展该类。你说的“隐藏A类的所有更改”是什么意思?我的意思是我需要隐藏A类变量的大部分过程。相反,我在B类中完成我的工作,并向使用A类的人提供最后的结果。谢谢,我终于接受了这是不可能的要求。