Тестирование, если свойство существует
Я читал о php docs это isset() быстрее property_exists() и мы должны использовать сочетание как
if (isset($this->fld) || property_exists($this, 'fld')) {
но почему я не могу просто использовать isset тогда?
if (isset($this->fld)) {
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