При удалении одной переменной GD другая меняет свой тип?

  • Автор темы Автор темы sverel
  • Дата начала Дата начала

sverel

Новичок
При удалении одной переменной GD другая меняет свой тип?

Это нормально, что при удалении одной переменной, другая меняет тип?

var_dump($small_res); // resource(111) of type (gd)
imagedestroy($res); // Здесь я не трогаю переменную $small_res, а удаляю совсем другую.
var_dump($small_res); // resource(111) of type (Unknown) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
imagedestroy($small_res); // WARNING! imagedestroy(): 111 is not a valid Image resource

P.S.> PHP 5.2.11
 
// а потом окажется, что это где то ссылка на нее, на самом деле...

А тебя не смущает, что у них одинаковый номер ресурса?
 
у одной и той же переменной должен быть одинаковый номер ресурса. См. внимательнее

var_dump($small_res); // resource(111) of type (gd)
var_dump($small_res); // resource(111) of type (Unknown)
Это одна и та же переменная. Естественно, и номер будет одинаковый.


Между ними я удаляю переменную $res, а не $small_res
 
хм.. да действительно, у $res тоже ид=111. Но как же так получилось? Метод создания такой:

PHP:
function resize($source) {
    .....
    return $source;
    ....
}

$small_res = resize($res);


Но т.к. $res не передаётся по ссылке, ждолжен был создаться её клон внутри ф-ции и вернуться то же клон. Это же не объект, а resource. Разве ресурсы тоже по ссылке в ф-ции передаются как объекты??? Или тут есть ещё какая-то хитрость?
 
Но т.к. $res не передаётся по ссылке, ждолжен был создаться её клон внутри ф-ции и вернуться то же клон. Это же не объект, а resource. Разве ресурсы тоже по ссылке в ф-ции передаются как объекты??? Или тут есть ещё какая-то хитрость?
кто тебе такое сказал, что должен создаться клон, да еще ресурса?
 
У меня тоже такая проблема. Пишу класс для работы с GD. Суть класса в том что обработать одно изображение и сохранить его разные экземпляры (с ресайз, с эффектамы и т.п.) так чтобы не создать новые объекты класса. То есть на пример:
PHP:
$im = new MyClass('src_img.png');
$img->resize(100, 100);
$img->save('dst_img.jpg');
$img->resize(300, 300);
$img->addShadow();
$img->save('dst_img2.jpg');
Как мне это осушествить?

-~{}~ 26.12.09 21:23:

Жаль что нельзя копировать или клонировать ресурс
 
Сверху