Il n'y a pas de meilleur moyen, mais comme c'est une opération que vous faites généralement assez souvent, vous feriez mieux d'automatiser le processus.
La plupart des frameworks offrent un moyen de rendre l'analyse des arguments une tâche facile. Vous pouvez créer votre propre objet pour cela. Exemple rapide et sale:
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 utilise massivement ce type de sucre.
Mais vous parlez de plus que cela, avec votre "// Handle error here". Vous mélangez 2 jobs: récupérer les données et les traiter. Ce n'est pas du tout la même chose.
Il existe d'autres mécanismes que vous pouvez utiliser pour valider les données. Encore une fois, les frameworks peuvent vous montrer les meilleures pratiques.
Créez des objets qui représentent les données de votre formulaire, puis attachez des processus et revenez dessus. Cela semble beaucoup plus de travail que de pirater un script PHP rapide (et c'est la première fois), mais c'est réutilisable, flexible et beaucoup moins sujet aux erreurs puisque la validation de formulaire avec PHP habituel a tendance à devenir rapidement du code spaguetti.