1. Go to this page and download the library: Download phpcommon/comparison library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
phpcommon / comparison example snippets
final class Money implements Equatable
{
private $amount;
private $currency;
public function __construct($amount, $currency)
{
$this->amount = (int) $amount;
$this->currency = (string) $currency;
}
public function equals(Equatable $other)
{
if (!$other instanceof self) {
return false;
}
return $this->amount === $other->amount && $this->currency === $other->currency;
}
}
use PhpCommon\Comparison\Equivalence;
class BloodGroupEquivalence implements Equivalence
{
public function equals(Equatable $other)
{
return get_class($other) === static::class;
}
public function equivalent($left, $right)
{
if (!$left instanceof Person) {
UnexpectedTypeException::forType(Person::class, $left);
}
if (!$right instanceof Person) {
return false;
}
return $left->getBloodType() === $right->getBloodType();
}
}
$equivalence = new BloodGroupEquivalence();
$donors = new BloodDonors($equivalence);
$james = new Person('James', 'A');
$john = new Person('John', 'A');
// James and John are considered equivalent once they are of the same blood group
var_dump($equivalence->equivalent($james, $john)); // Outputs bool(true)
// Initially, none of them are present in the collection
var_dump($volunteers->contains($james)); // Outputs bool(false)
var_dump($volunteers->contains($john)); // Outputs bool(false)
// Add James to the set of volunteers
$donors->add($james);
// Now, considering only the blood group of each donor for equality, both of
// them are considered present in the collection
$donors->contains($james); // Outputs bool(true)
$donors->contains($john); // Outputs bool(true)
use PhpCommon\Comparison\Hasher\ValueHasher as ValueEquivalence;
use PhpCommon\Comparison\Hasher\DateTimeHasher as DateTimeEquivalence;
use DateTime;
$relation = new ValueEquivalence([
DateTime::class => new DateTimeEquivalence()
]);
$date = '2017-01-01';
$timezone = new DateTimeZone('Pacific/Nauru');
$left = new DateTime($date, $timezone);
$right = new DateTime($date, $timezone);
// Outputs bool(true)
var_dump($relation->equivalent($left, $right));
use PhpCommon\Comparison\Hasher\IdentityHasher as IdentityEquivalence;
use PhpCommon\Comparison\Hasher\DateTimeHasher as DateTimeEquivalence;
use DateTime;
$identity = new IdentityEquivalence();
$value = new DateTimeEquivalence();
$date = '2017-01-01';
$timezone = new DateTimeZone('Pacific/Nauru');
$left = new DateTime($date, $timezone);
$right = new DateTime($date, $timezone);
// Outputs bool(false)
var_dump($identity->equivalent($left, $right));
// Outputs bool(true)
var_dump($value->equivalent($left, $right));
namespace PhpCommon\Comparison\Equatable;
final class Point implements Equatable
{
private $x;
private $y;
public function __construct($x, $y)
{
$this->x = (int) $x;
$this->y = (int) $y;
}
public function equals(Equatable $point)
{
if (!$point instanceof Point) {
return false;
}
return $this->x === $point->x && $this->y === $point->y;
}
}
namespace PhpCommon\Comparison\Equatable;
final class Point implements Hashable
{
private $x;
private $y;
public function __construct($x, $y)
{
$this->x = (int) $x;
$this->y = (int) $y;
}
public function equals(Equatable $point)
{
if (!$point instanceof Point) {
return false;
}
return $this->x === $point->x && $this->y === $point->y;
}
public function getHash()
{
return 37 * (31 + $this->$x) + $this->$x;
}
}
use PhpCommon\Comparison\UnexpectedTypeException;
final class BigInteger implements Comparable
{
private $value;
public function __construct($value)
{
$this->value = (string) $value;
}
public function compareTo(Comparable $other)
{
if (!$other instanceof self) {
throw UnexpectedTypeException::forType(BigInteger::class, $other);
}
return bccomp($this->value, $other->value);
}
}
use PhpCommon\Comparison\Comparator;
class StringLengthComparator implements Comparator
{
public function compare($left, $right)
{
return strlen($left) <=> strlen($right);
}
}
$comparator = new StringLengthComparator();
// Outputs int(-1)
var_dump($comparator->compare('ab', 'a'));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.