I ve got this question about form validation and business validation. I see a lot of frameworks that use some sort of form validation library. You submit some values and the library validates the values from the form. If not ok it will show some errors on you screen. If all goes to plan the values will be set into domain objects. Here the values will be or, better said, should validated (again). Most likely the same validation in the validation library. I know 2 PHP frameworks having this kind of construction Zend/Kohana.
When I look at programming and some principles like Don t Repeat Yourself (DRY) and single responsibility principle (SRP) this isn t a good way. As you can see it validates twice. Why not create domain objects that do the actual validation.
Example: Form with username and email form is submitted. Values of the username field and the email field will be populated in 2 different Domain objects: Username and Email
class Username {}
class Email {}
These objects validate their data and if not valid throw an exception. Do you agree? What do you think about this aproach? Is there a better way to implement validations? I m confused about a lot of frameworks/developers handling this stuff. Are they all wrong or am I missing a point?
Edit: I know there should also be client side kind of validation. This is a different ballgame in my Opinion. If You have some comments on this and a way to deal with this kind of stuff, please provide.