Как работает присвоение переменно объекта в php? Прошу помощи в разборе кода:var = '$assigned будет иметь это значение';
$instance = null;
var_dump($instance);
var_dump($reference);
var_dump($assigned);
// Результат
# NULL
# NULL
# object(SimpleClass)#1 (1) {
# ["var"]=> # string(30) "$assigned будет иметь это значение"
# }
Хочу понять, почему собственно $assigned не стал равным null?

21 Авг 2019 в 07:09
264 +1
0
Ответы
1

При выполнении следующей строки кода:

$assigned = $instance;

Происходит копирование ссылки на объект, который хранится в переменной $instance, в переменную $assigned. То есть $assigned и $instance указывают на один и тот же объект. Поэтому когда потом вы изменяете значение в свойстве объекта через $instance:

$instance->var = '$assigned будет иметь это значение';

Это изменение отражается и в переменной $assigned, так как обе переменные указывают на один и тот же объект.

Когда же вы делаете:

$instance = null;

Это обнуляет только переменную $instance, а переменная $assigned продолжает указывать на объект. Поэтому вы получаете корректный результат при выводе с помощью var_dump.

Таким образом, переменная $assigned не стала равной null, потому что она указывает на объект, который был создан ранее.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 718 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир