SobesLab логотип SobesLab

Ответ

По умолчанию аргументы функций в PHP передаются по значению (то есть внутри функции вы работаете с копией переменной). Однако объекты в PHP по своей природе передаются по ссылке (фактически передаётся ссылочный идентификатор объекта). Можно явно передать аргумент по ссылке, добавив & перед именем параметра в объявлении функции. Тогда любые изменения этой переменной внутри функции отразятся и на исходной переменной. В общем случае скалярные типы (числа, строки) передаются копированием (с помощью механизма copy-on-write для эффективности), а объекты — по ссылке на экземпляр.