2012-01-06 3 views
3

마법 설정기를 사용하여 속성이 존재하는지 확인할 수 있습니까?속성이 있는지 확인하십시오.

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

+0

@Damp Eeeck보고보십시오. ofc. : P \ – PeeHaa

+1

@danjordan이 말한 것처럼 정말로 php5 +에서 property_exists를 살펴 보자. http://php.net/manual/en/function.property-exists.php –

답변

7

사용 __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'를 반환합니다). 이 솔루션 (질문은 물론)은 매우 모호합니다. –

관련 문제