フォームの検証とビジネスの検証について質問があります。ある種のフォーム検証ライブラリを使用する多くのフレームワークを目にします。いくつかの値を送信すると、ライブラリがフォームからの値を検証します。うまくいかない場合は、画面にいくつかのエラーが表示されます。すべてが計画どおりに進むと、値がドメイン オブジェクトに設定されます。ここで、値が検証されるか、より適切に言えば、(再び) 検証される必要があります。ほとんどの場合、検証ライブラリで同じ検証が行われます。この種の構造 Zend/Kohana を持つ 2 つの PHP フレームワークを知っています。
プログラミングと、Don't Repeat Yourself (DRY) や単一責任の原則(SRP) などのいくつかの原則を見ると、これは良い方法ではありません。ご覧のとおり、2回検証されます。実際の検証を行うドメイン オブジェクトを作成してみませんか。
例: ユーザー名と電子メール フォームを含むフォームが送信されます。ユーザー名フィールドと電子メール フィールドの値は、ユーザー名と電子メールの 2 つの異なるドメイン オブジェクトに入力されます。
class Username {}
class Email {}
これらのオブジェクトはデータを検証し、有効でない場合は例外をスローします。同意しますか?このアプローチについてどう思いますか?検証を実装するより良い方法はありますか? このようなものを処理する多くのフレームワーク/開発者について混乱しています。それらはすべて間違っていますか、それともポイントがありませんか?
編集:クライアント側の種類の検証も必要であることはわかっています。これは私の意見では別の球技です。これについてコメントがあり、この種のものに対処する方法がある場合は、提供してください。