php Передача значений по ссылке в функцию - плюсы и минусы, когда это стоит делать, а когда нет

Передача значений по ссылке в функцию (или метод класса) позволяет сохранить результат работы с переменной в функции для внешнего кода без возврата значения этой переменной из функции.

Изменение нескольких переменных в функции с помощью передачи по ссылке

Если некоторые переменные (все или часть) будут переданы в функцию по ссылке, тогда после вызова функции их значения будут изменены и снаружи.

Передача по ссылке - правильно или нет

Ниже рассматриваем ситуации, в которых подразумеваем, что передача и по ссылке и по значению одинаково возможны.

Минусы передачи по ссылке:

  • Неуниверсальность - ведь иногда хочется сохранить в клиенском коде и старое значение, при передаче же по ссылке вы вынуждаете клиенский код дополнительно копировать передаваемое значение, если есть задача его сохранить, что может оказаться не всегда удобным.

Плюсы:

  • Более краткая запись (в ряде случаев) в вызывающем функцию коде - не требуется делать присваивание.

Комбинирование передачи по ссылке и возврата значения

Пожалуй, единственной правильно связкой с комбинацией является возврат признака успешности работы функции (да/нет) наряду с изменением значений по ссылке.

Во всех остальных случаях мы можем получить неочевидность работы функции, и сложность её сигнатуры.