在课堂内解决问题

时间:2016-03-01 16:47:09

标签: php oop setter magic-methods

所以我刚刚开始使用魔术方法,当我必须绑定变量以在我的函数中使用时遇到了这个问题。

这是我的问题的一个小例子

class test{
    protected $arraytest = array();
    function __construct(){
        $this->test = "datafor2";
        var_dump($this->arraytest);
    }
    function test(){
        return $this->test;
    }
    function __set($name, $value){
        $this->arraytest[$name] = $value;
    }
}
$test = new test();
echo $test->test();

所以我试图将它绑定test以供稍后在函数test()中使用,但因为我将变量绑定到对象,所以它使用魔术方法并将其绑定到二传手。
这不是我要查找的变量$arraytest,不应该将变量test绑定。

这可以通过哪些方式解决?我知道如果变量是test,我可以在stter中做一个例外,只是想知道在使用魔术设置器时有什么更好的做法。

1 个答案:

答案 0 :(得分:1)

只需将变量声明为属性,就不会使用setter。

class test{
    protected $arraytest = array();
    protected $test;

    function __construct(){
        $this->test = "datafor2";
        var_dump($this->arraytest);
    }
    function test(){
        return $this->test;
    }
    function __set($name, $value){
        $this->arraytest[$name] = $value;
    }
}
$test = new test();
echo $test->test();