Одна вещь, которая всегда подслушивала меня (и всех остальных, когда-либо) о PHP, - это ее несогласованность в названии функций и параметрах. Еще одним недавним раздражением является его тенденция запрашивать параметры функции по ссылке, а не по значению.Зачем нужно передавать примитивные параметры по ссылке в PHP?
Я быстро просмотрел руководство по PHP и нашел функцию sort()
в качестве примера. Если бы я выполнял эту функцию, я бы взял массив по значению, сортировал его в новый массив и возвращал новое значение. В PHP sort()
возвращает логическое значение и изменяет существующий массив.
Как я хотел бы назвать sort()
:
$array = array('c','a','b');
$sorted_array = sort($array);
Как PHP хочет, чтобы позвонить sort()
:
$array = array('c','a','b');
sort($array);
$sorted_array = $array;
И, кроме того, следующий бросает фатальную ошибку: Fatal error: Only variables can be passed by reference
sort(array('c','a','b');
Я бы предположил, что часть этого может быть наследие старых дней PHP, но, должно быть, причина была такова. Я могу увидеть значение при передаче объекта по ссылочному идентификатору, например, PHP 5+ (который, как я полагаю, представляет собой промежуток между передачей по ссылке и передачей по значению), но не в случае строк, массивов, целых чисел и т. Д.
Я не эксперт в области компьютерных наук, так как вы, вероятно, можете собраться, я пытаюсь понять некоторые из этих концепций, и мне любопытно, есть ли причина, таким образом, или это просто остатки.