Non esiste un modo migliore, ma poiché si tratta di un'operazione che di solito si esegue abbastanza spesso, è meglio automatizzare il processo.
La maggior parte dei framework offre un modo per rendere semplice l'analisi degli argomenti. Puoi costruire il tuo oggetto per quello. Esempio rapido e sporco:
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 questo tipo di zucchero in maniera massiccia.
Ma stai parlando di più di questo, con il tuo "// Gestisci l'errore qui". Stai mescolando 2 lavori: ottenere i dati ed elaborarli. Questo non è affatto lo stesso.
Esistono altri meccanismi che è possibile utilizzare per convalidare i dati. Ancora una volta, i framework possono mostrarti le migliori pratiche.
Crea oggetti che rappresentano i dati del tuo modulo, quindi allega i processi e torna a esso. Sembra molto più lavoro che hackerare uno script PHP veloce (ed è la prima volta), ma è riutilizzabile, flessibile e molto meno soggetto a errori poiché la convalida dei moduli con il solito PHP tende a diventare rapidamente codice spaguetti.