Không có cách nào tốt hơn nhưng vì đó là một hoạt động bạn thường làm khá thường xuyên, nên bạn sẽ tự động hóa quy trình tốt hơn.
Hầu hết các khung công tác cung cấp một cách để làm cho các đối số phân tích cú pháp một nhiệm vụ dễ dàng. Bạn có thể xây dựng đối tượng của riêng bạn cho điều đó. Ví dụ nhanh và bẩn:
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 sử dụng loại đường đó một cách ồ ạt.
Nhưng bạn đang nói về nhiều hơn thế, với "// Xử lý lỗi ở đây". Bạn đang trộn 2 công việc: lấy dữ liệu và xử lý nó. Điều này không giống nhau chút nào.
Có các cơ chế khác bạn có thể sử dụng để xác nhận dữ liệu. Một lần nữa, các khung có thể cho bạn thấy những điều tốt nhất.
Tạo các đối tượng đại diện cho dữ liệu của biểu mẫu của bạn, sau đó đính kèm các quy trình và quay lại với nó. Nghe có vẻ nhiều việc hơn khi hack một đoạn mã PHP nhanh (và đây là lần đầu tiên), nhưng nó có thể tái sử dụng, linh hoạt và ít bị lỗi hơn do xác thực mẫu với PHP thông thường có xu hướng nhanh chóng trở thành mã spaguetti.