【问题标题】:Copy entity to "different class"?将实体复制到“不同的类”?
【发布时间】:2017-12-21 16:07:57
【问题描述】:

我有一个customer 和一个order 实体。 (学说实体)

两者都有一个address 关联实体,实现相同的AddressInterface

当客户下单时,我想将客户的地址复制到订单的地址。 (我需要一份副本,因为我不希望客户地址改变时订单地址也改变)

所以我当然可以:

$orderAddress = new OrderInvoiceAddress();
$orderAddress->setLastName( $customerAddress->getLastName() );
...
...

但我想知道是否有更优雅的方式?

【问题讨论】:

  • 看看这个可以吗? stackoverflow.com/questions/14216285/…
  • 谢谢。我知道这一点,但我希望有更优雅的东西;)
  • 类型转换怎么样? $orderAddress = (OrderInvoiceAddress) $customerAddress;
  • 哇,我不知道有人能做到这一点!
  • 我明天试试。谢谢

标签: php symfony doctrine-orm


【解决方案1】:

使用静态方法:

class OrderAddress {

    static function CreateFromCustomerAddress(CustomerAddress $customerAddress)
    {
        $orderAddress=new self();
        $orderAddress->setFirstName($customerAddress->getFirstName());

        return $orderAddress;
    }

    private $firstName;

用法:

$orderAddress=OrderAddress::CreateFromCustomerAddress($customerAddress);

【讨论】:

  • 谢谢...但完全一样。
  • 不是。 1)您可以测试从一种转换到另一种的功能。 2)它使代码更具可读性。
  • 你可以使用 symfony 属性访问器。像您一样将数据从一个地方移动到另一个地方非常方便,但它使测试变得更加困难
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多