1. Ни один из них не является предпочтительным.
Если у вас нет особых причин поступать иначе, предпочтительным будет
$var1 = 10;
$var1 = test3($var1);
function test3($var)
{
return $var + 1;
}
Внедрение связи между различными частями вашей программы (при использовании global
) - это то, чего вы всегда должны стараться избегать.
Кроме того, если нет конкретной причины заставить вашу функцию принимать аргумент по ссылке, вам также следует избегать этого. Только очень малая часть всех функций ведет себя таким образом, поэтому, если ничего другого, вы рискуете запутаться среди разработчиков, которые используют этот код без реальной выгоды.
2. Вам не нужно думать о том, какой из них быстрее.
Если вы не профилировали свое приложение в реальных сценариях и не обнаружили, что эта функция является узким местом (чего, конечно, никогда не будет в этой простой форме), то оптимизация для производительности за счет написания ясного и обслуживаемого кода не только бессмысленно, но и вредно.
В качестве бонуса я должен упомянуть, что использование ссылки может фактически сделать функцию медленнее .