Тестирование, если свойство существует



Я читал о php docs это isset() быстрее property_exists() и мы должны использовать сочетание как



if (isset($this->fld) || property_exists($this, 'fld')) { 


но почему я не могу просто использовать isset тогда?



if (isset($this->fld)) {
336   2  
PHP

2 ответов:

, потому что property_exists скажет вам, если его даже определенное свойство класса/объекта, где as isset не делает этого различия. например:

class A {
  protected $hello;
}

class B {

}

используя property_exists($this, 'hello') на класс вернутся true, при использовании его в класс B вернутся false. isset вернутся false на и экземпляров.

Это зависит от того, как выполняется ваша программа, но если Вы читаете комментарии в руководстве, это поможет объяснить особенности функции.

http://php.timesoft.cc/manual/en/function.property-exists.php

важная часть здесь:

документация на важные новые свойства добавление к объектам во время выполнения. Фактически, property_exists вернет true, если вы спросите его о таком свойства.

Comments

    Ничего не найдено.