В PHP может кто-нибудь объяснить клонирование и ссылку на указатель?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 В PHP может кто-нибудь объяснить клонирование и ссылку на указатель?

Сообщение Anonymous »

Начнем с того, что я разбираюсь в программировании и объектах, но следующее в PHP для меня не имеет особого смысла.
В PHP мы используем оператор & для получения ссылки на переменная. Я понимаю ссылку как способ сослаться на одну и ту же «вещь» с другой переменной. Если я скажу например

Код: Выделить всё

$b = 1;
$a =& $b;
$a = 3;
echo $b;
выведет 3, поскольку изменения, внесенные в $a, аналогичны изменениям, внесенным в $b. И наоборот:

Код: Выделить всё

$b = 1;
$a = $b;
$a = 3;
echo $b;
должен вывести 1.
Если это так, то зачем нужно ключевое слово clone? Мне кажется, если я поставлю

Код: Выделить всё

$obj_a = $obj_b
тогда изменения, внесенные в $obj_a, не должны влиять на $obj_b,
и наоборот, $obj_a =& $obj_b должен указывать на тот же объект, поэтому изменения, внесенные в $obj_a, влияют на $obj_b.
Однако в PHP некоторые операции над $obj_a ДЕЙСТВИТЕЛЬНО влияют на $obj_b, даже если они назначены без ссылочного оператора ($obj_a = $obj_b). Сегодня при работе с объектами DateTime у меня возникла неприятная проблема, которую я в конечном итоге исправил, выполнив следующие действия:

Код: Выделить всё

$obj_a = clone $obj_b
Но большая часть php-кода, который я пишу, похоже, не требует явного клонирования, как в этом случае, и прекрасно работает без него. Что здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/361 ... -reference
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»