Лисю
Guest
Объясните поведение деструкторов...
Суть: создаём 2 РАЗНЫХ объекта класса.
Как я понимаю, в каждом объекте должны жить 2 разные перенменные $this->lnk, символизирующие ссылку на коннеут с БД.
Запустим этот пример:
почему деструктор первый раз пишет АКТИВЕН? Он же должен был разрушить $this->link ??!!!
PHP:
<?
class Database{
private $lnk = null;
//Устанавливаем коннект c БД
function connect() {
if(is_resource($this->lnk)) return true;
$this->lnk = mysql_connect("localhost", "", "");
if(is_resource($this->lnk))
mysql_select_db("cms", $this->lnk);
}
function __construct(){
$this->connect();
// Если это ресурс
if(is_resource($this->lnk))
echo "<br>КОНСТРУКТОР: $this->lnk АКТИВЕН!<br>";
else echo "<br>КОНСТРУКТОР: $this->lnk НЕАКТИВЕН!<br>";
}
function __destruct(){
mysql_close($this->lnk);
// Если это ресурс
if(is_resource($this->lnk))
echo "<br>ДЕСТРУКТОР: $this->lnk АКТИВЕН!<br>";
else echo "<br>ДЕСТРУКТОР: $this->lnk НЕАКТИВЕН!<br>";
}
}
$o1 = new Database;
$o2 = new Database;
echo "<br>Выходим из программы<br>";
?>
Как я понимаю, в каждом объекте должны жить 2 разные перенменные $this->lnk, символизирующие ссылку на коннеут с БД.
Запустим этот пример:
PHP:
КОНСТРУКТОР: Resource id #2 АКТИВЕН!
КОНСТРУКТОР: Resource id #2 АКТИВЕН!
Выходим из программы
ДЕСТРУКТОР: Resource id #2 АКТИВЕН!
ДЕСТРУКТОР: Resource id #2 НЕАКТИВЕН!