使用后如何将默认值设置回属性

时间:2018-12-05 08:52:41

标签: php oop

我的课堂上有一个isAccessible属性,除非我们在访问方法中传递true参数,否则它应该始终为false。

class Foo {

    public $isAccessible;

    public function __construct(){
        $this->isAccessible = false;
    }

    public function access($bool){
        $this->isAccessible= $bool;
        return  $this;
    }

    public function __destruct(){
        $this->isAccessible = false;
    }
}

$class= new Foo;
echo $class->isAccessible // false
$class->access(true)->andsomeothermethods..
// After using access method, it should be false then. 
echo $class->isAccessible // it's shows true but i want it as false

我该怎么办,那有可能吗?

2 个答案:

答案 0 :(得分:0)

如果要在访问方法结束后将isAccessible属性设置为false。您可以在return语句之前设置必要的值

class Foo {

    public $isAccessible = false;

    public function access($bool){
        $this->isAccessible = $bool;
        // some code
        $this->isAccessible = false;
        return $this;
    }
}

如果要在调用该类的另一个方法后将isAccessible属性设置为false,可以在每个方法的开头设置该属性

class Foo {

    public $isAccessible = false;

    public function access($bool){
        $this->isAccessible = $bool;
        // some code
        return  $this;
    }

    public function someMethod()
    {
        $this->isAccessible = false;
        // some code
        return  $this;        
    }
}

也许,只有将isAccessible用作访问方法的参数。

答案 1 :(得分:0)

更改属性的一个方法的值,执行某些操作,然后在此方法结束时,将该属性重新设置,这不是一个好方法。这应该是有目的的,而不是用一种方法来告诉另一位开发者这种逻辑。但是,如果您真的想以这种方式进行操作,请使用decorator pattern