это уродливо, но в классе foo:
function setData(array $data) {
foreach($data as $key => $value) {
$this->$key = $value;
}
}
это явно обходит логику установщика, поэтому
function setData(array $data) {
foreach($data as $key => $value) {
$func = 'set'.ucfirst($key);
$this->$func($value);
}
}
вы можете даже написать какую-то глобальную
function setDataOnObject(array $data, object $object) {
foreach($data as $key => $value) {
$func = 'set'.ucfirst($key);
$object->$func($value);
}
}
это, очевидно, все требует, чтобы сеттеры действительно существовали ...
Вы также можете использовать компонент сериализатора , как предложил enricog в их комментарии.Или вы можете использовать компонент доступа к свойству, который сам найдет правильные установщики или сумматоры.