Немає кращого способу, але оскільки це операція, яку ви зазвичай робите досить часто, вам краще автоматизувати процес.
Більшість фреймворків пропонують спосіб зробити аргументи для розбору аргументів легким завданням. Для цього ви можете побудувати власний об’єкт. Швидкий і брудний приклад:
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 масово використовують такий вид цукру.
Але ви говорите про більше, ніж це, з вашою помилкою "// Handle here". Ви змішуєте 2 завдання: отримання даних та їх обробка. Це зовсім не те саме.
Є й інші механізми, за допомогою яких можна перевірити дані. Знову ж таки, фреймворки можуть показувати найкращі мотиви.
Створіть об’єкти, які представляють дані вашої форми, потім приєднайте процеси та поверніться до неї. Це набагато більше звучить, що злом швидкого сценарію PHP (і це вперше), але він багаторазовий, гнучкий та набагато менше схильний до помилок, оскільки перевірка форми зі звичайним PHP, як правило, швидко стає кодом spaguetti.