No hay mejor manera, pero como es una operación que generalmente haces con bastante frecuencia, será mejor que automatices el proceso.
La mayoría de los marcos ofrecen una manera de hacer que el análisis de argumentos sea una tarea fácil. Puedes construir tu propio objeto para eso. Ejemplo rápido y sucio:
class Request
{
// This is the spirit but you may want to make that cleaner :-)
function get($key, $default=null, $from=null)
{
if ($from) :
if (isset(${'_'.$from}[$key]));
return sanitize(${'_'.strtoupper($from)}[$key]); // didn't test that but it should work
else
if isset($_REQUEST[$key])
return sanitize($_REQUEST[$key]);
return $default;
}
// basics. Enforce it with filters according to your needs
function sanitize($data)
{
return addslashes(trim($data));
}
// your rules here
function isEmptyString($data)
{
return (trim($data) === "" or $data === null);
}
function exists($key) {}
function setFlash($name, $value) {}
[...]
}
$request = new Request();
$question= $request->get('question', '', 'post');
print $request->isEmptyString($question);
Symfony usa ese tipo de azúcar de forma masiva.
Pero está hablando de más que eso, con su "// Manejar error aquí". Está mezclando 2 trabajos: obtener los datos y procesarlos. Esto no es lo mismo en absoluto.
Existen otros mecanismos que puede usar para validar datos. Una vez más, los marcos pueden mostrarle las mejores prácticas.
Cree objetos que representen los datos de su formulario, luego adjunte procesos y recurra a ellos. Suena mucho más trabajo que piratear un script PHP rápido (y es la primera vez), pero es reutilizable, flexible y mucho menos propenso a errores, ya que la validación de formularios con PHP habitual tiende a convertirse rápidamente en código spaguetti.