检查属性是否存在

问题描述:

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

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)) { 
} 

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

+3

尝试寻找在__isset http://php.net/manual/en/language.oop5.overloading.php – Damp 2012-01-06 19:31:57

+0

@Damp Eeeck。 OFC。 :P \ – PeeHaa 2012-01-06 19:33:47

+1

没有真正的@danjordan说试试看php5中的property_exists http://php.net/manual/en/function.property-exists.php – 2013-04-06 20:27:49

使用__isset()isset()

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

$test->myvar = 'yay!'; 

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

} 
+5

'isset'的行为与'property_exist'函数不一样(即,如果一个属性存在但等于'null'或'false','isset'通常返回'false')。这个解决方案(但也是问题)非常模糊。 – 2013-05-24 06:42:50