This library compares two values for equality.
If you need to add your own rules for comparing specific values, you can extend the library with your own comparison strategies.
- Simple equality comparison (
==
or===
) - Strategy interface for your own comparison rules
composer require scheb/comparator
$comparator = new \Scheb\Comparator\Comparator(true); // Type-sensive equal (===)
$comparator->isEqual(0, "0"); // Returns false
$comparator->isEqual(0, ""); // Returns false
$comparator->isEqual(0, 0); // Returns true
$comparator->isEqual(0, "foo"); // Returns false
$comparator = new \Scheb\Comparator\Comparator(false); // Type-insensive equal (==)
$comparator->isEqual(0, "0"); // Returns true
$comparator->isEqual(0, ""); // Returns true
$comparator->isEqual(0, 0); // Returns true
$comparator->isEqual(0, "foo"); // Returns false
To add your own comparison strategy, implement Scheb\Comparator\ValueComparisonStrategyInterface
.
Then, add an instance of that class via the constructor argument $customComparisonStrategies
of
Scheb\Comparator\Comparator
.
Custom comparison strategies take preference over default ones.
You're welcome to contribute to this library by creating a pull requests or feature request in the issues section. For pull requests, please follow these guidelines:
- Symfony code style
- PHP7.1 type hints for everything (including: return types,
void
, nullable types) - Please add/update test cases
- Test methods should be named
[method]_[scenario]_[expected result]
To run the test suite install the dependencies with composer install
and then execute bin/phpunit
.
This bundle is available under the MIT license.