What do you think about a Model - ModelMapper arch? Zend Framework uses this approach. You could have possibily the following classes: (silly naming convention for better understanding)
Model_User
Mapper_User_Email
Mapper_User_Name
Mapper_User_Password
And the individual mappers read the needed data, the 3rd party class only calls Model_User->getName()
Edit: Example usage:
//simple code:
$user = new Model_User();
echo "Your name is: " . $user->getName();
//Model_User:
public function getName() {
if($this->_name = null) {
$this->getNameMapper()->getName($this);
//getNameMapper() returns a Mapper_User_Name object
}
return $this->getName();
}
//Mapper_User_Name:
public function getName($user) {
$name = "john"; /*magic here, the class communicate with the service that holds names*/
$user->setName($name);
}
Example only, the getters and setters could be more defensive.