Глоссарий

Передача по ссылке (&)

В PHP переменные по умолчанию передаются по значению: функция получает копию. При передаче по ссылке (&$var) функция работает с оригинальной переменной.

Пример

function addTen(int $n): void {
  $n += 10; // меняет только локальную копию
}
function addTenRef(int &$n): void {
  $n += 10; // меняет оригинал
}

$x = 5;
addTen($x);    // $x = 5
addTenRef($x); // $x = 15

Объекты — особый случай

Объекты в PHP передаются по handle (указатель на объект), а не по значению и не по ссылке. Изменение свойств объекта внутри функции видно снаружи. Но $obj = new OtherClass() — не видно (заменяет локальный handle).

Когда использовать

Редко нужно в современном коде. Лучше возвращать новое значение из функции, а не мутировать аргумент. Оправдано для sort()-подобных функций или больших структур для избежания копирования.