检查属性是否存在

Pee*_*Haa 3 php getter-setter

是否可以检查是否存在使用魔术设定器设置的属性?

class Test
{
    private $vars;

    public function __set($key, $value) {
        $this->vars[$key] = $value;
    }

    public function &__get($key)
    {
        return $this->vars[$key];
    }
}

$test = new Test;

$test->myvar = 'yay!';

if (magic_isset($test->myvar)) {
}
Run Code Online (Sandbox Code Playgroud)

或者不可能,我只需要在班上设置另一个功能?

Tim*_*per 7

使用__isset()isset():

public function __isset($key)
{
    return isset($this->vars[$key]);
}
Run Code Online (Sandbox Code Playgroud)
$test = new Test;

$test->myvar = 'yay!';

if (isset($test->myvar)) {

}
Run Code Online (Sandbox Code Playgroud)

  • `isset`的行为与`property_exist`函数不同(即,如果属性存在但等于`null`或`false`,`isset`通常返回`false`).这个解决方案(但也是问题)很模糊. (5认同)