Заметки WEB-разработчика

Полезные материалы для web-разработки

Жесткие ссылки в php

В этой статье будет объяснено, как работают жесткие ссылки (hardlinks) в php

Упрощенное понимание.

Жесткая ссылка представляет собой просто переменную, которая является синонимом другой переменной (её другое имя). То есть они обе ссылаются на одинаковую ячейку памяти с одним и тем же значением. Не стоит воспринимать жесткие ссылки серьезнее, чем синонимы. При записи $x= &$y мы как бы говорим php: привяжи переменную $y к той же ячейке памяти, что привязана переменная $x . После того, как переменные привязаны к значению памяти, становится не важно у какой из переменных поменять значение, меняем значение одной переменной, меняется значение и у второй:

Как Мы можем разорвать ссылку

$x = 1;
$y = &$x;
unset($y);
echo $x; // выведет 1
echo $y; // Undefined

Как это работает внутри

Рассмотрим рисунок ниже:

 

Что будет если мы удалим переменную $a ? Мы удалим ее имя из "кучи имен", но не значение. Поэтому $b по-прежнему будет равно 1 :

 

Итог. Что нужно помнить.

  • Ссылки не являются адресами или указателями. Это просто другое имя для того же значения
  • unset() не уничтожает переменную - только имя!
  • Значение продолжает «жить», пока у него есть хотя бы одно имя. И даже некоторое время после
  • Ссылаться нужно на другое имя. Например - имя переменной.

Комментарии

Комментарии через Вконтакте