哪里是实现频繁对象属性填充的最佳位置

时间:2015-11-18 13:57:31

标签: php symfony

我们正在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

0 个答案:

没有答案