I'm just thinking of API versioning data objects. Let's say you have an object car, which looks like this in version 1 (directory v1):
class Car {
protected $color;
protected $brand;
protected $price;
protected $custom;
// getters and setters
}
In version 2, the data object changes (directory v2, $custom removed, added new property $exhaust):
class Car {
protected $color;
protected $brand;
protected $price;
protected $exhaust;
// getters and setters
}
We thought of making a "mapper" class, so that we are able to work with different versions in the business logic, e.g.:
Class CarMapper extends Mapper
{
// needs to have all member variables from all versions
protected $color;
protected $brand;
protected $price;
protected $custom;
protected $exhaust;
public function out($object)
{
$mapperObj = new self();
// you need to do this for each version of a data object and
// prepare the mapperObj according the members of the object for
// this version
if ($object instanceof CarV1) {
$mapperObj->color = $object->color;
...
}
return mapperObj;
}
}
I think this approach will lead a "bloated" Mapper class and I thought there might be a better solution using a design pattern. Could we use a factory pattern here?
Aucun commentaire:
Enregistrer un commentaire