Люди! Ктото знает метод уничтожения экземпляра класса?

StUV

Rotaredom
2Crazy:
вот этот пример
PHP:
function UpgrX(&$x)  { 
    $x.="aaaaaaaaa"; 
    unset($x); 
} [/QUOTE]
$x="qqqqq";
UpgrX($x);
exho $x;
и вот это утверждение:
в функции создается объект == ссылка на передаваемый объект, с ним производятся манипуляции, и в случае с unset - этот новый объект ансетится, а первоначальный объект остается...
то есть как в твоем примере "уничтожается" ссылка на объект, но не его значение...
так ?
 

StUV

Rotaredom
2Crazy:
:(
то есть сделать ансет в функции нереально ?
(в смысле unset работает на том уровне, на котором объект создавался...?)
 

Crazy

Developer
Функция здесь ни при чем. Проблема в ссылке. Что до функций, то делать в такой ситуации unset обычно не стоит...
 

StUV

Rotaredom
видимо причина - отсутствие механизма работы с указателями...
(или он уже есть ?)
 

Crazy

Developer
Автор оригинала: StUV
видимо причина - отсутствие механизма работы с указателями...(или он уже есть ?)
Он есть. :) Но он слишком прорачен. В отличие от того, что принято в других языках.
 

Ямерт

The Old One
Я вот подумал...если передача значений по ссылке рулит (не происходит создания временного дубликата объекта, можно менять значение параметра), почему в PHP это не происходит автоматически с переменными, указанными в качестве параметра функции - как это, например, осуществлено в Java?
 

kvn

programmer
Я вот подумал...если передача значений по ссылке рулит (не происходит создания временного дубликата объекта, можно менять значение параметра), почему в PHP это не происходит автоматически с переменными, указанными в качестве параметра функции - как это, например, осуществлено в Java?
BC - Backward Compatibility.
IMHO.
 

Screjet

Новичок
Автор оригинала: kvn Ну дык сказал бы, че там происходит?
Вот такая конструкция тоже работает:
PHP:
new PEAR();
(т.е. необязательна переменная, которой "присваевается" объект)
происходит примерно вот что: создается временный объект (оп. new), срабатывает конструктор, а потом КОПИРУЕТСЯ, согласно оператора "=". Временный объект почему-то не уничтожается, что и вызвает утечку памяти. Нет специального обработчика "= new", потому и возможна конструкция " = & new" (получение значение временного объекта по ссылке).
 

tony2001

TeaM PHPClub
>Временный объект почему-то не уничтожается, что и вызвает утечку памяти.
откуда такая информация?
 

Screjet

Новичок
Автор оригинала: tony2001
>Временный объект почему-то не уничтожается, что и вызвает утечку памяти.
откуда такая информация?
Из эксперимента, даже еще хитрее придумал, опытный ПХПист поймет хитрость:
PHP:
function tmp(){

    $a = new PEAR();

}

$c = 40000;

while ($c--){

    tmp();

}
 

Screjet

Новичок
Кстати что в 5-м ПХП намечается по данному топику? Можно как-то узнать? Есси можно - подскажите как(где) плз.. В частности интересует ChangeLog и новые навороты.
 

si

Administrator
Временный объект почему-то не уничтожается, что и вызвает утечку памяти.
Не надо путать особенности работы менеджера памяти в РНР с утечками памяти.
 

si

Administrator
В чем же эта особенность, так похожая на утечку памяти?
хватить переливать из пустого в порожнее. src доступны, изучайте ищите memory leak (к слову в РНР есть для этого средства) или пишите bug report на bugs.php.net.
 

Screjet

Новичок
Автор оригинала: tony2001
сэр, похоже, не понимает значения понятия "утечка памяти".
Сорри.
Ты как всегда прав. Никакой утечки небыло, все дело было в "Кащее бессмертном" :)
 
Сверху