isset()
Это языковая конструкция, которая проверяет инициализацию переменных или свойств класса:
$a = 10;
isset($a); // true
isset($a, $b); // false
class Test
{
public $prop = 10;
}
$obj = new Test;
isset($obj->prop); // true
__isset()
Это волшебный метод, который вызывается, когда isset()
или empty()
проверяют несуществующее или недоступное свойство класса:
class Test
{
public function __isset($name) {
echo "Non-existent property '$name'";
}
}
$obj = new Test;
isset($obj->prop); // prints "Non-existent property 'prop'" and return false
isset() __isset()
Language construct | Magic method | Always return bool | Result depends on custom logic* | Must be invoked in code | Called automatically by event | Unlimited number of parameters | Has only one parameter | Can be used in any scope | Must be defined as method** | Is a reserved keyword | Not a reserved keyword | Can't be redefined (Parse error) | Can be redefined in extended class***
__isset()
результат в любом случае будет автоматически лить как bool
.
На самом деле вы можете определить пользовательская функция __isset()
, но она не имеет ничего общего с магическим методом.
См. в этом примере .
В отличие от общих функций, они могут быть определены только в области видимости класса и автоматически активируются при определенных событиях, таких как: недоступный вызов метода, сериализация класса, когда unset()
используется для недоступных свойств и т. д. См. Также эту официальную документацию: Перегрузка .