jkhaled / equatable
基于属性比较对象的接口
v1.0.0
2022-02-06 22:15 UTC
Requires (Dev)
- phpunit/phpunit: 9.5.x-dev
README
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