Это метод вызывается при попытке удалить несуществующее или недоступное свойство и, если его не реализовать, то такое свойство нельзя будет удалить, используя функцию unset.
$p = new Squere(10); // свойство area класса Squere имитированное unset($p->area); var_dump($p->area); // int(100)
При реализации метода __unset следующим образом, свойство area в этом случае будет вести себя более предсказуемо.
public function __unset($name) { if ($name == 'area') { $this->$name = null; } } $p = new Squere(10); unset($p->area); var_dump($p->area); // float(0)