ensostudio / comparator
任何PHP变量的灵活比较
1.1.0
2022-08-27 12:57 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^8.5.25
This package is auto-updated.
Last update: 2024-09-27 17:16:02 UTC
README
灵活比较的
- 索引/关联数组
- 对象/闭包
- 浮点数/NAN
- 二进制/文本字符串
- 流资源
安装
通过Composer
composer require ensostudio/comparator
用法
use EnsoStudio\Comparator\Comparator; $comparator = Comparator(Comparator::EQUAL_ARRAY | Comparator::EQUAL_FLOAT); if ($comparator->compare($value, $value2)) { echo 'same values'; }
$comparator->setFlags(Comparator::EQUAL_FLOAT); var_dump(3 - 2.4 == 0.6, $comparator->compare(3 - 2.4, 0.6)); // false, true $comparator->setFlags(Comparator::EQUAL_STRING); var_dump('foo' == 'FOO', $comparator->compare('foo', 'FOO')); // false, true // Case-issensetive comparation supports only for English: var_dump($comparator->compare('я', 'Я')); // false $comparator->setFlags(Comparator::EQUAL_CLOSURE); $createClosure = function () { return function ($value) { return $value * 2; }; }; var_dump($createClosure() == $createClosure(), $comparator->compare($createClosure(), $createClosure())); // false, true $comparator->setFlags(Comparator::EQUAL_ARRAY | Comparator::EQUAL_FLOAT); var_dump($comparator->compare( ['float' => 2 - 1.6, 'int' => 3], ['int' => 3, 'float' => 0.4] )); // true
公共API
namespace EnsoStudio\Comparator; class Comparator { public function __construct(int $flags); public function setFlags(int $flags); public function getFlags(): int; public function hasFlag(int $flag): bool; public function getType(mixed $value): string; public function canCompare(string $type, string $type2): bool; public function compare(mixed $value, mixed $value): bool; }