Я видел людей (которые обычно пишут хороший код), которые напрямую изменяют $_POST
массив следующим кодом:
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
Имеет смысл, что update_record()
не следует обращаться к $ _POST напрямую, чтобы мы могли передать ему, например, другие массивы данных, но, конечно, это ленивый, плохой дизайн или, возможно, просто неправильный? Однако мы по-прежнему передаем действительный массив update_record()
, так зачем создавать новый?
Это не суть вопроса, просто пример использования. Тем не менее, я слышал, что многие люди говорят, что это не должно быть сделано с $_REQUEST
данными, и это плохая практика. Но почему? Выглядит достаточно безобидно.
Примеры:
Установка значения по умолчанию
$_GET
(или публикации), которое на самом деле не существуетДобавление
$_POST
значений, которые фактически не были опубликованы после отправки формыНепосредственная очистка или фильтрация
$_GET
значений массива или ключей в самом начале скрипта (резервная очистка ... почему бы и нет?)Установка
$_POST
значения вручную перед отправкой формы для заполнения ввода значением по умолчанию (когда вход считывает$_POST
значение по умолчанию; я сделал это)Составляя свои собственные
$_SERVER
ценности? Конечно, эй, почему бы и нет?Как насчет других, как
$_COOKIE
и$_SESSION
? Конечно, мы должны изменить те прямо, верно? Тогда почему не остальные?
Должна ли прямая модификация суперглобалистов никогда не проводиться, или это нормально в некоторых случаях?