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()-подібних функцій або великих структур для уникнення копіювання.