Вот код:
$bg = new Imagick('./resourses/back.png');
$b = $bg;
$b->cropImage(100, 50, 0, 40);
$b->writeImage('cropped.png');
$b = $bg;
$b->writeImage('test.png');
В файл cropped.png
записывается обрезанная картинка, как и должно быть. В файл test.png
должна записаться нетронутая картинка back.png
, которая содержится в переменной $bg
. Но в файл test.png
записывается обрезанная картинка - ровно та же, что и в cropped.png
. Почему это происходит?
Оператор присваивания
Исключением из обычного для PHP способа присваивания по значению явлаются объекты (object), которые, начиная с версии PHP 5, присваиваются по ссылке. Принудительно скопировать объекты по значению можно с помощью специального ключевого слова clone.
Т.е. вот тут $b = $bg;
переменной $b
присваивается ссылка на объект $bg
и когда вы ее кропаете, то, по факту, кропается изображение в объекте $bg
.
Вам нужно либо использовать clone
, либо создавать два объекта.
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Потратил уже пол дня на эту "ошибку" и никак не могу найти решение, есть массив:
Пришлось перейти с PHP 56 на PHP 7, и после перехода вот такая ошибка:
ЗдравствуйтеУ меня не работает сервер - ошибка 502 в течение 25 минут, в логах вижу следующие: