Я бачив, як люди (які зазвичай пишуть хороший код) безпосередньо змінюють $_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? Звичайно, ми маємо їх змінити прямо так? Тоді чому б не інші?
Чи не слід робити прямих модифікацій суперглобалів , чи це в деяких випадках нормально ?