我们正在Symfony(2.7)中开发一个处理第三方实体的应用程序,通常需要将对象从一个子系统转换(或填充)到另一个子系统。
举个例子,我们需要使用$destinationObject
中存储的数据填充$sourceObject
:
$sourceObject;
$destinationObject = new DestinationObject();
$destinationObject->setProperty01($sourceObject->getProperty01());
$destinationObject->setProperty02($sourceObject->getProperty02());
$destinationObject->setProperty03($sourceObject->getProperty03());
$destinationObject->setProperty04($sourceObject->getPropertyWithDifferentName());
$intermediateValue = explode('/',$sourceObject->getProperty04());
$destinationObject->setProperty05($intermediateValue[0]);
$destinationObject->setProperty06($intermediateValue[1]);
手动方法(或无方法)会导致重复的代码,复制和粘贴实践等。
所以我的问题是:
实施这种"转型"
的适当位置在哪里?到目前为止我的想法:
$destinationObject->loadFromSourceObject($sourceObject)
这样的模型方法这样做是一个坏主意(实体耦合) 编辑此外,还有一个常见的情况:$destinationObject
我们需要从$sourceObjectFromClassA
和$sourceObjectFromClassB
加载数据,所以{{ 1}}被理解为返回新创建的 SourceObjectToDestinationObjectTransformer
的方法不是有效选项。我的意思是,可能需要这样的东西(坏代码即将发出警告,仅用于示例目的):
DestinationObject