検証コードを処理するための私の戦略は次のとおりです。「検証ライブラリ」とは、電子メールが電子メールであり、電話番号が数値であり、本質的にビジネスルールではないことを確認するものを意味すると思います。
アイデアは、各ビジネスルールコードをファンクターとして持つことです。PHPの場合は、文字列を使用して関数を定義するだけで取得できます。他の言語の場合、戦略パターンを使用する必要がある場合があります。ファンクターのインターフェースを定義し(PHPには必要ありません)、それを配列にダンプします。
成功、エラー、エラーコードをバッファに返す配列を実行します。最後に、エラーバッファを調べて、失敗した検証を特定します。ビューをカスタマイズするために使用します。
これが例です
$checkUniqueUserName = new CheckUniqueUserName();
$checkEmailNotUsed = new EmailNotUsed();
$validator = array();
$validator[$checkUniqueUserName->name()] = $checkUniqueUserName;
$validator[$checkEmailNotUsed->name()] = $checkEmailNotUsed;
$results = array();
foreach ($validator as $v)
{
$result[$v->getValidatorName()] = $v->execute($userInfo);
}
class CheckUniqueUserName()
{
public function execute($userInfo)
{
// SQL blah blah blah
if ($bNameUnique)
return array ('success' => 1)
else
return array ('success' => 0, 'error' => "$name is in used", 'error_code' => 'duplicate_name);
}
}
最後に、それぞれが検証プロセスで満たされた結果配列が作成され、失敗したものと失敗したものがわかります。次に、これをクライアント側に渡して、失敗したフィールドを強調表示するなど、さらに処理することができます。error_codeは、適切なエラーメッセージとそれに適用されるフォーマットを検索するために使用されます。
ただし、コールバックの意味についてはよくわかりません。