Есть ли необходимость передавать переменную по ссылке в PHP5?

StackOverflow https://stackoverflow.com/questions/885586

  •  23-08-2019
  •  | 
  •  

Вопрос

С помощью PHP5 используется «Копировать на записи» и проходить через ссылку, вызывая больше штрафа на производительность, чем усиление, почему я должен использовать пропусков? Помимо функций ответа вызовов, которые возвращают более одного значения или классов, а атрибуты, которые вы хотите изменить, не вызывая установленную функцию позже (плохая практика, я знаю), есть ли для нее использование, которое я не упускаю?

Это было полезно?

Решение

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

Помните также, что в объектах PHP всегда прохождение по ссылке.

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

Другие советы

Рекурсивная функция, которая заполняет массив? Помните, что писал что -то подобное, один раз.

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

Даже при прохождении объектов есть разница.

Попробуйте этот пример:

class Penguin { }

$a = new Penguin();

function one($a)
{
  $a = null;
}

function two(&$a)
{
  $a = null;
}

var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);

Результатом будет:

object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL

Когда вы передаете переменную, содержащую ссылку на объект по ссылке, вы можете изменить ссылку на объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top