|  | 
|  | 1 | +<?php | 
|  | 2 | + | 
|  | 3 | +namespace Doctrine\Common\Collections; | 
|  | 4 | + | 
|  | 5 | +use Closure; | 
|  | 6 | +use Countable; | 
|  | 7 | +use IteratorAggregate; | 
|  | 8 | + | 
|  | 9 | +/** | 
|  | 10 | + * @template TKey of array-key | 
|  | 11 | + * @template-covariant T | 
|  | 12 | + * @extends IteratorAggregate<TKey, T> | 
|  | 13 | + */ | 
|  | 14 | +interface ReadableCollection extends Countable, IteratorAggregate | 
|  | 15 | +{ | 
|  | 16 | + | 
|  | 17 | +    /** | 
|  | 18 | +     * @param-immediately-invoked-callable $p | 
|  | 19 | +     * | 
|  | 20 | +     * @param Closure(TKey, T):bool $p | 
|  | 21 | +     * | 
|  | 22 | +     * @return bool | 
|  | 23 | +     */ | 
|  | 24 | +    public function exists(Closure $p); | 
|  | 25 | + | 
|  | 26 | +    /** | 
|  | 27 | +     * @param-immediately-invoked-callable $p | 
|  | 28 | +     * | 
|  | 29 | +     * @param Closure(T, TKey):bool $p | 
|  | 30 | +     * | 
|  | 31 | +     * @return ReadableCollection<TKey, T> | 
|  | 32 | +     */ | 
|  | 33 | +    public function filter(Closure $p); | 
|  | 34 | + | 
|  | 35 | +    /** | 
|  | 36 | +     * @param-immediately-invoked-callable $func | 
|  | 37 | +     * | 
|  | 38 | +     * @param Closure(T):U $func | 
|  | 39 | +     * | 
|  | 40 | +     * @return Collection<TKey, U> | 
|  | 41 | +     * | 
|  | 42 | +     * @template U | 
|  | 43 | +     */ | 
|  | 44 | +    public function map(Closure $func); | 
|  | 45 | + | 
|  | 46 | +    /** | 
|  | 47 | +     * @param-immediately-invoked-callable $p | 
|  | 48 | +     * | 
|  | 49 | +     * @param Closure(TKey, T):bool $p | 
|  | 50 | +     * | 
|  | 51 | +     * @return array{0: ReadableCollection<TKey, T>, 1: ReadableCollection<TKey, T>} | 
|  | 52 | +     */ | 
|  | 53 | +    public function partition(Closure $p); | 
|  | 54 | + | 
|  | 55 | +    /** | 
|  | 56 | +     * @param-immediately-invoked-callable $p | 
|  | 57 | +     * | 
|  | 58 | +     * @param Closure(TKey, T):bool $p | 
|  | 59 | +     * | 
|  | 60 | +     * @return bool TRUE, if the predicate yields TRUE for all elements, FALSE otherwise. | 
|  | 61 | +     */ | 
|  | 62 | +    public function forAll(Closure $p); | 
|  | 63 | + | 
|  | 64 | +    /** | 
|  | 65 | +     * @param-immediately-invoked-callable $p | 
|  | 66 | +     * | 
|  | 67 | +     * @param Closure(TKey, T):bool $p | 
|  | 68 | +     * | 
|  | 69 | +     * @return T|null | 
|  | 70 | +     */ | 
|  | 71 | +    public function findFirst(Closure $p); | 
|  | 72 | + | 
|  | 73 | +    /** | 
|  | 74 | +     * @param-immediately-invoked-callable $func | 
|  | 75 | +     * | 
|  | 76 | +     * @param Closure(TReturn|TInitial, T):TReturn $func | 
|  | 77 | +     * @param TInitial $initial | 
|  | 78 | +     * | 
|  | 79 | +     * @return TReturn|TInitial | 
|  | 80 | +     * | 
|  | 81 | +     * @template TReturn | 
|  | 82 | +     * @template TInitial | 
|  | 83 | +     */ | 
|  | 84 | +    public function reduce(Closure $func, mixed $initial = null); | 
|  | 85 | + | 
|  | 86 | +} | 
0 commit comments