Tidak ada cara yang lebih baik tetapi karena ini adalah operasi yang biasanya Anda lakukan cukup sering, Anda sebaiknya mengotomatiskan prosesnya.
Sebagian besar kerangka kerja menawarkan cara untuk membuat argumen parsing tugas yang mudah. Anda dapat membangun objek sendiri untuk itu. Contoh cepat dan kotor:
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 menggunakan gula semacam itu secara besar-besaran.
Tetapi Anda berbicara lebih dari itu, dengan "// Menangani kesalahan di sini". Anda mencampur 2 pekerjaan: mendapatkan data dan memprosesnya. Ini tidak sama sekali.
Ada mekanisme lain yang dapat Anda gunakan untuk memvalidasi data. Sekali lagi, kerangka kerja dapat menunjukkan Anda praktik terbaik.
Buat objek yang mewakili data formulir Anda, lalu lampirkan proses dan kembali ke sana. Kedengarannya jauh lebih banyak pekerjaan yang meretas skrip PHP cepat (dan ini adalah pertama kalinya), tetapi itu dapat digunakan kembali, fleksibel, dan jauh lebih rentan kesalahan karena validasi bentuk dengan PHP biasa cenderung dengan cepat menjadi kode spaguetti.