Зависит от того, для чего предназначена функция. Если его целью является изменение ввода, используйте ссылки. Если цель состоит в том, чтобы вычислить некоторые данные на основе ввода, а , а не , чтобы изменить ввод, во что бы то ни стало, используйте обычный return
.
Взять, к примеру, array_push
:
int array_push(array &$array, mixed $var[, mixed $...])
Специальная цель этой функции - изменить массив. Маловероятно, что вам понадобится как исходный массив, так и его копия, включая значения, отправленные.
array_push($array, 42); // most likely use case
// if you really need both versions, just do:
$old = $array;
array_push($array, 42);
Если array_push
не принимает ссылки, вам нужно сделать это:
// array_push($array, $var[, $...])
$array = array_push($array, 42); // quite a waste to do this every time
С другой стороны, чисто вычислительная функция, такая как pow
, не должна изменять исходное значение:
number pow(number $base, number $exp)
Вероятно, вы с большей вероятностью будете использовать эту функцию в контексте, где вы хотите сохранить исходное число без изменений и просто вычислить результат на его основе. В этом случае было бы неудобно, если pow
изменил исходный номер.
$x = 123;
$y = pow($x, 42); // most likely use case
Если pow
взял ссылки, вам нужно сделать это:
// pow(&$base, $exp)
$x = 123;
$y = $x; // nuisance
pow($y, 42);