从另一个类PHP设置受保护变量的正确方法

我有这个问题要解决:
我创建了两个类,其中第二个是第一个的扩展,在这里我想
设置并从第一堂课中获取一个变量,但是…我找不到做到这一点的“正确”方法
基本上是这样的:

class class_one {

    protected $value;
    private $obj_two;

    public function __construct() {
        $this->obj_two = new class_two;
    }

    public function firstFunction() {

        $this->obj_two->obj_two_function();

        echo $this->value; // returns 'New Value' like set in the class two

    }

}

class class_two extends one {   
    public function obj_two_function() {    
        "class_one"->value = 'New Value';   
    } 
}

我怎样才能做到这一点?

解决方法:

头等舱不应初始化第二类,除非您正在寻找Uroboros!保护变量可以由扩展类设置,而无需任何功能支持.只需输入$this-> protVariable =“ stuff”;

但是您将需要一个受保护的函数来从第二个类中设置ClassOne的私有变量.同样,必须在ClassOne中创建一个函数才能实际检索其值.

class ClassOne {
    private $privVariable;
    protected $protVariable;

    /**
     */
    function __construct () {

    }

    /**
     * This function is called so that we may set the variable from an extended
     * class
     */
    protected function setPrivVariable ($privVariable) {

        $this->privVariable = $privVariable;

    }

}

然后,在第二个类中,您可以调用parent :: setPrivVariable()以使用父函数设置值.

class ClassTwo extends \ClassOne {

    /**
     */
    public function __construct () {

        parent::__construct ();

    }

    /**
     * Set the protected variable
     */
    function setProtVariable () {

        $this->protVariable = "stuff";

    }

    /**
     * see ClassOne::setPrivVariable()
     */
    public function setPrivVariable ($privVariable) {

        parent::setPrivVariable ( $privVariable );

    }

}
上一篇:linux-导出在shell中是变量值的变量


下一篇:javascript-与js中的变量混淆