2012-01-06 9 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. ОФК. : P \ – PeeHaa

+1

Нет, так как @danjordan говорит, попробуйте взглянуть на property_exists в php5 + 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' (т. е. если a свойство существует, но равно «null» или 'false',' isset' возвращает обычно 'false'). Это решение (но и вопрос) довольно неоднозначно. –