SpartakuS
#Правильно. Этот метод нужен для того чтобы уничтожать объект не так unset($db), а так $db->destroy()
Если бы ты писал на C++ и инстанс бд у тебя передавался бы как указатель, то смысл есть, но тут пхп =) При уничтожении объекта вызывается деструктор и именно в нём должен быть код, подчищающий за собой мусор, это раз, во вторых unset($this); - это плохо, вернее бессмысленно, ты удаляешь локальную переменную внутри функции, снаружи на объект это никак не повлияет:
class Test
{
protected $_id;
protected static $_max = 1;
public function __construct()
{
$this->_id = self::$_max;
self::$_max += 1;
}
public function destroy()
{
unset($this);
}
public function getId()
{
return $this->_id;
}
}
$a = new Test();
$b = new Test();
echo 'Перед удалением $a: a->id=' . $a->getId() . "\n"; // Перед удалением $a: a->id=1
$a->destroy();
echo 'После удаления $a: a->id=' . $a->getId() . "\n"; // После удаления $a: a->id=1
echo 'Перед удалением $b: b->id=' . $b->getId() . "\n"; // Перед удалением $b: b->id=2
$b->destroy();
echo 'После удаления $b: b->id=' . $b->getId() . "\n"; // После удаления $b: b->id=2
По поводу закрытия соединения, чистки результата запроса - незнаю, дело твоё, но я считаю что нужно вызывать mysql_close|mysql_free_result, правило хорошего тона так сказать. Плюс если ты выбрал где-нить кучу строк и не удалил ссылку на результат, он так и будет висеть до того пока скрипт не отработает, в итоге запрос тут, запрос там и 10 мегабайт памяти отожрали =)