He visto personas (que generalmente escriben un buen código) directamente alterar la $_POSTmatriz con un código como este:
// 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.
Tiene sentido que update_record()no se acceda a $ _POST directamente, por lo que podemos pasarle otras matrices de datos, por ejemplo, pero ¿seguramente esto es un diseño vago, malo o posiblemente simplemente incorrecto? Sin embargo, todavía estamos pasando una matriz válida update_record(), entonces, ¿por qué crear una nueva?
Este no es el punto de la pregunta, solo un ejemplo de uso. Sin embargo, he escuchado a mucha gente decir que esto no debería hacerse con $_REQUESTdatos, y es una mala práctica. ¿Pero por qué? Parece lo suficientemente inofensivo.
Ejemplos:
Establecer un valor predeterminado
$_GET(o posterior) que realmente no existeAgregar
$_POSTvalores que no se publicaron realmente después de enviar un formularioDesinfectar o filtrar directamente los
$_GETvalores de la matriz o las claves muy temprano en el script (saneamiento alternativo ... ¿por qué no?)Establecer un
$_POSTvalor manualmente antes del envío del formulario para llenar una entrada con un valor predeterminado (cuando la entrada lee$_POSTsu valor predeterminado; lo he hecho)¿Inventar tus propios
$_SERVERvalores? Claro, ¿por qué no?¿Qué hay de los demás, como
$_COOKIEy$_SESSION? Por supuesto, tenemos que modificarlos directamente ¿verdad? Entonces, ¿por qué no los demás?
¿ Nunca se debe hacer una modificación directa de las superglobales , o está bien hacerlo en algunos casos?