codeliner / php-equalsbuilder

1.2.0 2014-06-13 16:12 UTC

This package is not auto-updated.

Last update: 2024-09-10 01:21:05 UTC


README

PHP 的 EqualsBuilder

Build Status

安装

安装 codeliner/php-equalsbuilder 使用 composer。有关 composer 文档,请参阅 getcomposer.org。将以下要求添加到您的 composer.json 中

"codeliner/php-equalsbuilder" : "1.2.*"

使用方法

使用 EqualsBuilder 一次比较任意数量的值对。

echo EqualsBuilder::create()
                ->append('equals', 'equals')
                ->append(1, 1)
                ->append(1, '1')
                ->equals() ? 
    "All value pairs are equal" : "At least one value pair is not equal";

//Output: All value pairs are equal

您还可以启用严格模式来比较值类型。

echo EqualsBuilder::create()
                ->append('equals', 'equals')
                ->append(1, 1)
                ->append(1, '1')
                ->strict() //enable strict mode
                ->equals() ? 
    "All value pairs are equal" : "At least one value pair is not equal";

//Output: At least one value pair is not equal

如果您只提供第一个参数,则第二个参数设置为 true。这使您能够同时使用对象比较方法和 EqualsBuilder。

echo EqualsBuilder::create()
                ->append($vo->sameValueAs($otherVo))
                ->append(1, 1)
                ->append(1, '1')
                ->equals() ?
    "All value pairs are equal" : "At least one value pair is not equal";

//Output: All value pairs are equal

您还可以提供第三个参数作为回调,该回调与值对一起调用。回调应返回一个布尔值。

echo EqualsBuilder::create()
                ->append($vo, $otherVo, function($a, $b) { return $a->sameValueAs($b);})
                ->append(1, 1)
                ->append(1, '1')
                ->equals() ?
    "All value pairs are equal" : "At least one value pair is not equal";

//Output: All value pairs are equal

当 $a 和 $b 是数组列表(具有连续整数键的数组,从 0 开始到 count - 1 结束)时,回调选项特别有趣。在这种情况下,对于列表 $a 中的每个项目以及 $b 中相应的项目,都会调用回调,假设 count($a) == count($b) 为真。

$aList = array($vo1, $vo2, $vo3);
$bList = array($vo1, $vo2, $vo3);

echo EqualsBuilder::create()
                ->append($aList, $bList, function($aVO, $bVO) { return $aVO->sameValueAs($bVO);})
                ->append(1, 1)
                ->append(1, '1')
                ->equals() ?
    "All value pairs are equal" : "At least one value pair is not equal";

//Output: All value pairs are equal