Orada iyi bir yol ama genellikle oldukça sık yapmak bir operasyon olduğundan, daha iyi sürecini otomatik hale ediyorum.
Çoğu çerçeveler, kolay bir görev ayrıştırma argümanlar yapmak için bir yol sunar. Eğer bunun için nesnenin sahibi inşa edebilirsiniz. Hızlı ve kirli örnek:
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 kitlesel şeker bu tür kullanın.
But you are talking about more than that, with your "// Handle error here
". You are mixing 2 jobs : getting the data and processing it. This is not the same at all.
Verileri doğrulamak için kullanabileceğiniz başka mekanizmalar vardır. Yine, çerçeveler size iyi pratices gösterebilir.
Formun verileri temsil nesneleri oluşturmak, sonra processses eklemek ve ona geri düşmek. Bu (ve ilk kez) hızlı bir PHP komut dosyası kesmek çok daha fazla iş geliyor ama her zamanki PHP ile Form doğrulama hızlı spaguetti kod olma eğilimindedir çünkü eğilimli, yeniden kullanılabilir, esnek ve çok daha az hata var.