前向きに考えると、これにアプローチできるより良い方法が間違いなくあります。まず、事前定義された検証メソッドを使用して検証クラスのようなものを作成してみてください。
(非常に大まかな)例を見てみましょう:
class Validator {
public function validate($args) {
$errors = array();
//Make sure to do any santising you need too
foreach($args as $field=>$data) {
if ($response = $field($data))
$errors[$field] = $response;
//You could create break code here if you wanted
//to check if the form was invalid without detailed feedback
}
if (empty($errors)) {
return false;
}
return $errors;
}
private function email_field($data) {
$valid = true;
//perform a validation on email here, generate an $err_msg if it's not valid
if ($valid)
return false;
return $err_msg
}
}
$validator = new Validator();
//You probably want to explode or loop through the error messages
//Or for extra brownie points, use the key of each element in the array to place
//the error message intelligently within your HTML!
$validation_errs = $validator->validate($_POST);
if ($validation_errs)
print_r($validation_errs);
フォームと組み合わせて...
<form method="post" action="">
<input type="text" name="email_field" />
</form>
これを組み合わせて、検証を提供できます。これがより良い理由は、サイト全体でこのクラスを使用できるためです。つまり、検証ロジックを複製する必要がなく、さらに重要なことに、フォームごとにネストされたロジックのトレイルを持つ必要がないということです。post 変数を渡すだけで、クラスは必要な検証を自動的に実行し、すべてクリア (直感的には "false" です、申し訳ありません) を返すか、フィールド名とペアになった検証エラー メッセージの配列を返します。から。
さらに、これはサーバー側とクライアント側の検証を組み合わせて処理する場合に役立ちます。AJAX を使用して、非常に具体的な単一フィールドの検証クエリを AJAX 経由で PHP に呼び出し、使用可能な応答を返すことができます (実行している限り)。出力が AJAX 通信に有効であることを確認するのに十分です)。
したがって、効率性に関しては、現在何が重要であるか、またはパフォーマンスの違いがどれほど無視できるかということだけではありません...後で、フォームが変更されたとき、検証ロジックが必要なときにどれだけの時間を節約できるかについてです。また、同じ検証ロジックを何度も再利用する必要がある場合。