Почему вы объединили $ _GET и $ _POST в PHP?

Я просто видел этот код, изучая исходный код WordPress (PHP), вы можете видеть, что они объединяют / переводят все значения get и post в 1 массив запросов.

Теперь, когда я это знаю, $ _GET и $ _POST уже доступны, вызывая $ _REQUEST БЕЗ использования функции array_merge (), поэтому любые идеи, почему они это сделают?

$_REQUEST = array_merge($_GET, $_POST); 

Это связано с тем, что по умолчанию $_REQUEST является слиянием $_GET , $_POST и $_COOKIE . Кроме того, порядок, в котором переменные этих суперглобалей объединены в $_REQUEST , зависит от параметра ini variables_order и от PHP 5.3.0 также может зависеть от request_order . Поэтому я предполагаю, что разработчик хотел убедиться, что $_REQUEST состоит только из $_GET и $_POST , объединенных в этом конкретном порядке, если у него нет доступа к ini-настройкам (например, на общем хосте). Понимаете, variables_order и request_order не настраиваются для каждого сценария.

НТН

$_REQUEST $_COOKIE по умолчанию содержит содержимое массивов $_GET , $_POST и $_COOKIE . Возможно, они хотят исключить из нее переменные COOKIE, поскольку они обычно не используются для этой цели.

Это так, если у вас есть переменная GET и переменная POST с тем же именем, она выберет переменную POST над GET.

Также вы можете не захотеть файлы cookie в переменной $ _REQUEST.

Я не знаю конкретно, почему это было сделано там, где вы его видели, но я видел это раньше, когда некоторая обработка была выполнена по значениям в одном массиве или другом, и вы хотите объединить эти изменения обратно в $ _REQUEST, чтобы кто-либо использование $ _REQUEST получит изменения, даже если они были сделаны с переменными $ _POST или $ _GET.

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

Почему бы вам не хотеть делать это напрямую с $ _REQUEST? Потому что $ _REQUEST содержит тонну дополнительной информации, которой нет $ _POST и $ _GET. Возможно, вы не захотите применить свою обработку ко всем этим дополнительным битам.