Daha iyi bir yol yoktur, ancak genellikle oldukça sık yaptığınız bir işlem olduğundan, işlemi otomatikleştirmeniz daha iyi olur.
Çoğu çerçeve, argümanları kolay bir görevi ayrıştırmanın bir yolunu sunar. Bunun için kendi nesnenizi oluşturabilirsiniz. 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 bu şekeri büyük miktarda kullanır.
Ama bundan daha fazlasını konuşuyorsunuz, "// Hatayı burada ele alın". 2 işi karıştırıyorsunuz: verileri almak ve işlemek. Bu hiç de aynı değil.
Verileri doğrulamak için kullanabileceğiniz başka mekanizmalar da vardır. Yine, çerçeveler size en iyi uygulamaları gösterebilir.
Formunuzun verilerini temsil eden nesneler oluşturun, ardından işlemleri ekleyin ve ona geri dönün. Hızlı bir PHP betiğini hackleyen çok daha fazla iş geliyor (ve ilk kez), ancak her zamanki PHP ile form doğrulaması hızla spaguetti kodu olma eğiliminde olduğundan yeniden kullanılabilir, esnek ve çok daha az hataya eğilimlidir.