Ссылки в 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. См. также детальное объяснение передачи по ссылке