В вашем классе есть свойство $var1
, поэтому __set
не называется : оно вызывается только в том случае, если нет свойства с именем того, которое вы пытаетесь установить.
Удалите это общедоступное свойство $var1
, и будет вызвано __set
.
Тем не менее, даже после удаления этого свойства, __get
все еще вызывается.
Если вы добавите эхо в конец вашего скрипта, вы увидите, что __get вызывается после, чем эхо - то есть после того, что кажется концом вашего скрипта.
И если вы посмотрите на свой метод деструктора:
function __destruct() {
print "<br/>Destroying " . $this->name . "\n";
}
Вы видите, что этот деструктор пытается прочитать из несуществующего свойства - отсюда и вызов __get
.