В PHP параметры функции можно передать по ссылке, добавив амперсанд к параметру в объявлении функции, например:
function foo(&$bar)
{
// ...
}
Теперь я знаю, что это не , предназначенное для повышения производительности, но позволяющее функциям изменять переменные, которые обычно находятся вне их области.
Вместо этого PHP, похоже, использует Copy On Write, чтобы избежать копирования объектов (и, возможно, также массивов), пока они не будут изменены. Таким образом, для функций, которые не изменяют свои параметры, эффект должен быть таким же, как если бы вы передали их по ссылке.
Однако мне было интересно, может ли логика «Копировать при записи» быть закороченной при передаче по ссылке и влияет ли это на производительность.
ETA: Конечно, я предполагаю, что это не быстрее, и я хорошо знаю, что это не то, для чего нужны ссылки. Так что я думаю, что мои собственные догадки довольно хороши, я просто ищу ответ от кого-то, кто действительно знает, что определенно происходит под капотом. За пять лет разработки PHP мне всегда было трудно получить качественную информацию о внутренностях PHP, не читая источник.