#php #class #variables #object #clone
#php #класс #переменные #объект #клонировать
Вопрос:
Я пытаюсь сделать что-то вроде:
$obj2 = $obj1
где $ var1 — это объект, проблема в том, что я хочу, чтобы $ obj2 был похож на мгновенный снимок $ obj1 — именно таким, какой он есть в данный момент, но по мере изменения переменных $ obj1 меняются и переменные $ obj2. Возможно ли это вообще? Или мне придется создать новый «фиктивный» класс только для того, чтобы я мог создать клон?
Ответ №1:
Просто клонируйте объект, вот так:
$obj2 = clone $obj1;
Любые изменения в членах $obj1
после приведенного выше заявления не будут отражены в $obj2
.
Комментарии:
1. Потрясающе, теперь я чувствую себя глупо, лол. Спасибо, это сработало проще / лучше, чем я когда-либо надеялся!
Ответ №2:
Объекты передаются по ссылке в PHP. Это означает, что когда вы присваиваете объект новой переменной, эта новая переменная содержит ссылку на тот же объект, а не новую копию объекта. Это правило применяется при назначении переменных, передаче переменных в методы и переменных в функции.
В вашем случае оба, $obj1
и $obj2
, ссылаются на один и тот же объект, поэтому изменение любого из них приведет к изменению одного и того же объекта.
Комментарии:
1. @KingCrunch Спасибо за ссылку. Я буду уверен, что не буду использовать слово «указатель», когда говорю о ссылках в PHP.