Магические функции автоматически вызывается (срабатывает), когда что-то происходит. Нормальные функции должны быть специально вызваны вашим php-кодом.
В вашем случае: __isset () будет автоматически вызываться, когда у вас есть isset (), который пытается получить незанятое свойство.
Пример:
root@folgore:/tmp/php# cat a.php
<?php
class a {
private $att1;
public $att2;
function __isset($field) {
echo "__isset invoked for $field\n";
}
}
$obj=new a();
// __isset will be triggered:
isset($obj->att1);
// __isset will not be triggered:
isset($obj->att2);
root@folgore:/tmp/php# php a.php
__isset invoked for att1