Когда к передаче ссылкой в PHP

Я задаюсь вопросом, если его хорошая практика к передаче ссылкой, когда Вы только читаете переменную, или если она должна всегда передаваться как значение.

Пример с передачей ссылкой:

$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;

function &do_my_hash(&$value){
   return md5($value);
}

Пример с передачей значением:

$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;

function do_my_hash($value){
   return md5($value);
}

Который лучше? Например, если я должен был выполнить цикл с 1 000 раундов?

Пример цикла:

for($i = 0 ; $i < 1000 ; $i++){
   $a = 'Fish & Chips '.$i;
   echo do_my_hash($a);
}
31
задан Vidar Vestnes 28 January 2010 в 20:42
поделиться

5 ответов

Если вы хотите пройти значение значение (так что функция не модифицирует ее) , нет причин передавать его посредством ссылки: только будет Сделайте свой код сложнее понять, как подумают люди « Эта функция может изменить то, что я передам к нему - о, это не изменяет это? »

в приведенном вами приведенном вами, ваш Функция do_my_hash не модифицирует значение , вы передаете его; Итак, я бы не использовал ссылку.

И если вы беспокоитесь о производительности, вы должны прочитать этот недавний пост в блоге: Не используйте PHP-ссылки :

Другая причина, по которой люди используют ссылку Поскольку они думают, что это делает код Быстрее. Но это неправильно. Это даже хуже: ссылки в основном делают код помедленнее! Да, ссылки часто делают Код медленнее - извините, мне просто пришлось Повторите это, чтобы сделать это понятно.

На самом деле эта статья может быть интересным чтением, даже если вы в первую очередь не обеспокоены производительностью; -)

46
ответ дан 27 November 2019 в 21:54
поделиться

JSON - это еще один формат данных, проходящих через протокол HTTP (например, текст, HTML, PDF и т. Д.). Вы, вероятно, имеете в виду Cometd .

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

-121--3418710-

Радость микрооптимизации. : -)

Честно говоря, вероятно, нельзя получить, передавая «нормальные» переменные посредством ссылки (если вы не хотите повлиять на их значение в их первоначальном объеме). Кроме того, поскольку PHP 5 объектов автоматически передаются посредством ссылки.

3
ответ дан 27 November 2019 в 21:54
поделиться

Прохождение по ссылке не предлагает никакой пользы, если вы не хотите изменять это значение внутри функции. Я стараюсь максимально использовать Pass-Value, так как намного проще читать, а поток скрипта более согласуется.

2
ответ дан 27 November 2019 в 21:54
поделиться

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

Единственный случай, когда может потребоваться передача по ссылке, это когда необходимо изменить несколько значений. Однако такие случаи, как правило, редки, и обычно их следует рассматривать как флаг для проверки кода, так как, вероятно, есть лучший способ решения проблемы.

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

9
ответ дан 27 November 2019 в 21:54
поделиться

Не знаю автоматически, но вы можете напечатать:

:e!

для перезагрузки файла

-121--745431-

PHP использует максимально возможное использование копирования (всякий раз, когда он обычно увеличивает производительность), поэтому использование ссылок не собирается дать вам никакой выгоду; Это будет только больно. Используйте ссылки только тогда, когда вы действительно нуждаетесь в них. Из руководства PHP:

Сделайте Использовать обратную ссылку на повышение производительности. Двигатель автоматически оптимизирует это самостоятельно. Только возвратные ссылки, когда у вас есть действительная техническая причина для этого.

12
ответ дан 27 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: