45 lines
928 B
PHP
45 lines
928 B
PHP
<?php
|
|
/**
|
|
* Copyright 2018 Kacper Donat
|
|
*
|
|
* @author Kacper "Kadet" Donat <kacper@kadet.net>
|
|
*
|
|
* Full license available in separate LICENSE file
|
|
*/
|
|
|
|
namespace Kadet\Functional\Predicate;
|
|
|
|
|
|
use Kadet\Functional\Predicate;
|
|
|
|
class AnyOfPredicate extends AbstractPredicate
|
|
{
|
|
/**
|
|
* Array of predicates to check if all are satisfied.
|
|
* @var \Kadet\Functional\Predicate[]
|
|
*/
|
|
private $predicates = [];
|
|
|
|
public function __construct(Predicate ...$predicates)
|
|
{
|
|
$this->predicates = $predicates;
|
|
}
|
|
|
|
public function or(...$predicate): Predicate
|
|
{
|
|
$predicate = array_merge($this->predicates, $predicate);
|
|
return parent::or($predicate);
|
|
}
|
|
|
|
|
|
public function __invoke(...$args): bool
|
|
{
|
|
foreach ($this->predicates as $predicate) {
|
|
if ($predicate(...$args)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
} |