Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы(ИТ).doc
Скачиваний:
8
Добавлен:
23.11.2019
Размер:
349 Кб
Скачать
☆

№38 Использование ссылок в php.

Несмотря на то, что в РНР не существует понятия указателя, все же возможность передавать ссылки на другие переменные остается. Ссылки в РНР бывают двух видов: жесткие и символические. Первые упрощенно называют просто "ссылки", а вторую группу - переменные переменные. Жесткие ссылки пришли в РНР с 4 - й версией, а до этого (в 3 - 1 версии) существовали лишь ссылки символические.

Так же как профессиональный кейтеринг предоставляет возможность выбора услуг в широком ассортименте, так и в РНР ссылки открывают возможность доступа к содержимому одной переменной с использованием разных имен. В РНР ссылки не являются псевдонимами таблиц символов и совершенно не похожи на указатели языка Си.

В РНР содержимое переменной и присвоенное ей имя - суть разные понятия и именно поэтому одному содержимому могут быть присвоены различные имена. Непрофессиональная аналогия: оформление цветами может проводиться по разному поводу и одни и те же цветы использоваться для выражения разного смысла. Переходя на язык программистов, самой простой аналогией могу служить файлы - имена переменных и имена файлов Unix, которые являются элементами каталогов, в то время, как содержимым переменных являются сами файлы. Так вот ссылки в РНР можно сравнить с жесткими ссылками (hardlinks) используемые в системах файлов Unix.

РНР и жесткие ссылки

В РНР жесткая ссылка является простой переменной, которая может выступить в роли синонима другой переменной. Обратите внимание, что многоуровневые ссылки в РНР не поддерживаются. В этой связи жесткие ссылки есть смысл рассматривать именно как синонимы и не приписывать им иного, более глубокого содержания. Для создания жесткой ссылки следует использовать амперсанд (&).

РНР и символические ссылки (переменные переменные)

Символическую ссылку следует рассматривать, как строковую переменную, содержащую информацию о другой переменной (переменная переменная). Символическая ссылка ссылается на переменную, а чтобы добраться до ее значения, перед именем ссылки проставляют знак $. Другими словами, для того, чтобы обычная строковая переменная могла использоваться в качестве ссылки, перед ней проставляется дополнительный символ $. Интерпретатор понимает это так: учитывать не буквальное значение $p, а учесть значение переменной, чье имя хранит переменная $p. Впрочем, символические ссылки используются не чаще, чем спички на детский день рождения.

Передача значений по жесткой ссылке

У вас есть также возможность передачи по ссылке переменных в пользовательскую функцию. Это может потребоваться тогда, когда требуется разрешение для функции модифицировать ее аргументы. Еще одна возможность пользовательских функций в РНР - возврат по ссылкам.

Жесткая ссылка и переменная (объект), на которую эта ссылка ведет, абсолютно равноправны, но, вместе с тем, изменение каждой из этих двух составляющих влечет за собой и изменение другой. При помощи оператора Unset() можно разрывать связь между ссылкой и объектом, но удаляется объект только в том случае, если на него никто больше не ссылается.