本文整理汇总了PHP中Closure::compare方法的典型用法代码示例。如果您正苦于以下问题:PHP Closure::compare方法的具体用法?PHP Closure::compare怎么用?PHP Closure::compare使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Closure
的用法示例。
在下文中一共展示了Closure::compare方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __remove
/**
* In case of @OneToMany or @ManyToMany or @ManyToOne, this is a general function
* for removing a record from a collection
*
* @param $name
* @param Model $model
* @param \Closure|ComparatorInterface|null $comparator
* @throws \Athem\Exception\InvalidArgument
* @throws \Exception
* @return $this
*/
protected function __remove($name, Model $model, $comparator = null)
{
if (!$this->{$name} instanceof Collection) {
throw new \Exception(sprintf('Invalid call of __remove function on property \'%s\' of class/type %s. ' . 'Property type must be Doctrine\\Common\\Collections\\Collection or extended.', $name, is_object($this->{$name}) ? get_class($this->{$name}) : gettype($this->{$name})));
}
switch (true) {
case $comparator instanceof ComparatorInterface:
$this->{$name} = $this->{$name}->filter(function ($m) use($model, $comparator) {
return $comparator->compare($m, $model) === 0;
});
break;
case $comparator instanceof \Closure:
$this->{$name} = $this->{$name}->filter(function ($m) use($model, $comparator) {
return $comparator($m, $model);
});
break;
case null === $comparator:
$this->{$name} = $this->{$name}->filter(function ($m) use($model) {
return $m->getArrayCopy() != $model->getArrayCopy();
});
break;
default:
throw new \Athem\Exception\InvalidArgument(sprintf('Invalid comparator. Must be of classes: \\Closure or \\Athem\\Stdlib\\ComparatorInterface, but %s found.', is_object($comparator) ? get_class($comparator) : gettype($comparator)));
}
return $this;
}