代码之家  ›  专栏  ›  技术社区  ›  vimuth

学说比较两个对象

  •  0
  • vimuth  · 技术社区  · 6 年前

    嗨,我需要比较一下教义中的两个对象。我有客户存储库和实体。这是我的密码,

     public function index(CarAdRepository $carAdRepository, CustomerRepository $customerRepository): Response {
            $cus = $customerRepository->findAll();
            $customer = new Customer();
            $customer->setTitle('Mr');
            $customer->setName('aaa');
            $customer->setLastName('bbb');
            if($customer == $cus[0]){
                echo 'ddd';
            }else{
                echo 'no';
            }
        }
    

    在我的表中我有这些值,

    enter image description here

    但我总是不知道,如果有人能帮忙,那就太好了

    1 回复  |  直到 6 年前
        1
  •  4
  •   Flying    6 年前

    条令实施 IdentityMap 确保您始终收到 相同的 同一数据库行的对象,但 仅当它从标识映射加载时 .

    在您的例子中,您将使用php比较运算符将某个任意对象与从数据库中获取的实体进行比较。换句话说,您要检查两个对象是否相等,但在PHP中没有这样的内置功能。

    为了实现您的目标,您必须自己实现对象比较功能,因为实际的比较逻辑可能会有所不同。

    更新: 在您的案例中,最简单的比较示例是逐属性比较:

    private function compare(Customer $a, Customer $b)
    {
        return $a->getTitle() === $b->getTitle() &&
            $a->getName() === $b->getName() &&
            $a->getLastName() === $b->getLastName();
    }
    

    将此方法直接移入 Customer 名为like的实体 isEqual() .

    也可以通过使用 reflection 但是,如果需要进行一些非常重要的比较,它可能会给案例带来一定程度的复杂性。