Что Делают Ссылки
Что делают ссылки
Ссылки в 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. См. также детальное объяснение передачи по ссылке.
Третье, что могут ссылки - возвращают значение по ссылке.