jkhaled/equatable

基于属性比较对象的接口

v1.0.0 2022-02-06 22:15 UTC

This package is auto-updated.

Last update: 2024-09-07 02:56:49 UTC


README

PHP UNIT

PHP中对象比较的等价接口。

当我们使用php中的==来比较对象时,即使所有属性都相等,也会得到错误的结果。这个库提供了一个接口,通过返回对象的属性并检查它们是否相等来进行对象比较。

安装

composer require jkhaled/equatable 

使用示例

require_once __DIR__ . '/vendor/autoload.php';

class User extends \Jkhaled\Equatable\AbstractEquatable
{
    private $id;
    private $firstname;

    public function getId()
    {
        return $this->id;
    }

    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    public function getFirstname()
    {
        return $this->firstname;

    }

    public function setFirstname($firstname)
    {
        $this->firstname = $firstname;
        return $this;
    }

    // the properties to be compared to check equality
    public function getProperties(): array 
    {
        return ['id', 'firstname'];
    }
}

$user1 = (new User())
    ->setFirstname('khaled')
    ->setId(111);

$user2 = (new User())
    ->setFirstname('khaled')
    ->setId(111);

var_dump($user1 === $user2); // false
var_dump($user1->equalTo($user2)); // true