понедельник, 3 ноября 2008 г.

Ссылочные переменные в PHP

Жесткая ссылка
Ссылается на другую переменную с присвоенным той значением. Ссылка на ссылку не поддерживается.
Жесткая ссылка работает в обе стороны, т.е. при изменении значения одной из переменных меняется значение и другой переменной. Отсюда видимо и термин "жесткая" ссылка.
Для создания жесткой ссылки используется оператор =&
Пример:
$i=5;
$j=& $i; //объявляем жесткую связь (ссылку) между и
$j=8; //после такого присвоения переменная также приобретает значение 8
echo "i=$i , j=$j\n"; //действительно, на выходе видим i=8 , j=8

При объявлении жесткоссылочной переменной физическая память под неё не выделяется, а во внутренних таблицах PHP помечается лишь факт жесткой связки двух переменных. Соответственно при деинициалзации жесткоссылочной переменной разрывается лишь ссылочная связь, но физическая память не освобождается, ибо она и не была выделена. Память освобождается только при деинициализации первой объявленной переменной.

Символическая ссылка
- это стриковая (тип string) переменная, хранящая имя другой переменной.
Чтобы получить значение исходной переменной через символическую ссылку, нужно просто поставить перед символической ссылкой еще один знак $
Пример:
$x="большой";
$y="маленький";
$size="x"; //создаем символическую ссылку на переменную $x
echo $$size; //выведется значение переменной $x, т.е. слово "большой"
$$size="средний" //а так мы присваиваем переменной $x новое значение "средний"

Объектные ссылки
<?php
class ExampleName{} //объявляем новый класс
$n1=new ExampleName{};
$n1->inlel=12; //присваиваем значение атрибуту класса
$n2=$n1;
$n2->intel=40;
echo "Intelligence1= {$n1->intel} , intelligence2= {$n2->intel}";
?>
В PHP5 будут выведены два разных значения, т.к. хотя обе переменные и ссылаются на один объект, но это каждый раз новый объект одного класса.

Комментарии: 0:

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница