Validating a User via Save Method
It's better to separate the validation from the save operation and to use a constraint object to setup the rules which be applied to the entity. So you get a better separation of concern, which is one of the keys to good OOP architecture. I propose something like this: 

$user = new User;
$user-&gt;setName( 'Peter' );
$user-&gt;setEmail( 'peter@email.com' );
$validator = new Validator(new UserConstrainte)); 
if( $validator-&gt;validate($user)){
    $databaseStuff-&gt;save($user)
} else {
    $error = $validator-&gt;getErrors()
}


I advise you to check the validator component from symfony2: https://github.com/symfony/Validator which is really well designed.