Учебник РНР
НазадГлава 14. Ссылки. Разъяснения. Вперёд

Что делают ссылки

Ссылки в PHP дают возможность двум переменным ссылаться на одно содержимое.
Если вы:

$a =& $b

это означает, что $a и $b указывают на одну и ту же переменную.

Примечание: $a и $b здесь абсолютно эквивалентны, но это не означает, что $a указывает на $b или наоборот. Это означает, что $a и $b указывают на одно место.

Такой же синтаксис можно использовать в функциях, возвращая ссылки, и в операции new (в PHP 4.0.4 и позднее):

$bar =& new fooclass();
$foo =& find_var ($bar);

Примечание: если не использовать операцию &, это приведёт к копированию объекта. Если вы используете $this в классе, операция проводится над текущим экземпляром этого класса. Присвоение без & копирует экземпляр (например, данный объект), а $this работает с этой копией, что не всегда желательно. Обычно вам нужно иметь один экземпляр для работы, из соображений производительности и использования памяти.

Хотя вы можете использовать операцию @ для скрытия любых ошибок в конструкторе при использовании её как @new, это не сработает в операторе &new. Это ограничение Zend-Машины, нарушение которого приводит к ошибке разборщика.

Второе, что делают ссылки - передают переменные по ссылке. При этом локальная переменная в функции и переменная в области видимости вызывателя ссылаются на одно и то же содержимое. Пример:

function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);

присвоит $a значение 6. Это происходит, потому что в функции foo переменная $var ссылается на то же содержимое, что и переменная $a. См. также детальное объяснение передачи по ссылке.

Третье, что могут ссылки - возвращают значение по ссылке.


Назад Оглавление Вперёд
Ссылки. Разъяснения. Вверх Чем ссылки не являются