summaryrefslogtreecommitdiff
path: root/vendor/doctrine/collections/src/ReadableCollection.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2024-08-13 23:45:21 +0200
committerpolo <ordipolo@gmx.fr>2024-08-13 23:45:21 +0200
commitbf6655a534a6775d30cafa67bd801276bda1d98d (patch)
treec6381e3f6c81c33eab72508f410b165ba05f7e9c /vendor/doctrine/collections/src/ReadableCollection.php
parent94d67a4b51f8e62e7d518cce26a526ae1ec48278 (diff)
downloadAppliGestionPHP-bf6655a534a6775d30cafa67bd801276bda1d98d.zip
VERSION 0.2 doctrine ORM et entités
Diffstat (limited to 'vendor/doctrine/collections/src/ReadableCollection.php')
-rw-r--r--vendor/doctrine/collections/src/ReadableCollection.php242
1 files changed, 242 insertions, 0 deletions
diff --git a/vendor/doctrine/collections/src/ReadableCollection.php b/vendor/doctrine/collections/src/ReadableCollection.php
new file mode 100644
index 0000000..a8dbd43
--- /dev/null
+++ b/vendor/doctrine/collections/src/ReadableCollection.php
@@ -0,0 +1,242 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\Common\Collections;
6
7use Closure;
8use Countable;
9use IteratorAggregate;
10
11/**
12 * @psalm-template TKey of array-key
13 * @template-covariant T
14 * @template-extends IteratorAggregate<TKey, T>
15 */
16interface ReadableCollection extends Countable, IteratorAggregate
17{
18 /**
19 * Checks whether an element is contained in the collection.
20 * This is an O(n) operation, where n is the size of the collection.
21 *
22 * @param mixed $element The element to search for.
23 * @psalm-param TMaybeContained $element
24 *
25 * @return bool TRUE if the collection contains the element, FALSE otherwise.
26 * @psalm-return (TMaybeContained is T ? bool : false)
27 *
28 * @template TMaybeContained
29 */
30 public function contains(mixed $element);
31
32 /**
33 * Checks whether the collection is empty (contains no elements).
34 *
35 * @return bool TRUE if the collection is empty, FALSE otherwise.
36 */
37 public function isEmpty();
38
39 /**
40 * Checks whether the collection contains an element with the specified key/index.
41 *
42 * @param string|int $key The key/index to check for.
43 * @psalm-param TKey $key
44 *
45 * @return bool TRUE if the collection contains an element with the specified key/index,
46 * FALSE otherwise.
47 */
48 public function containsKey(string|int $key);
49
50 /**
51 * Gets the element at the specified key/index.
52 *
53 * @param string|int $key The key/index of the element to retrieve.
54 * @psalm-param TKey $key
55 *
56 * @return mixed
57 * @psalm-return T|null
58 */
59 public function get(string|int $key);
60
61 /**
62 * Gets all keys/indices of the collection.
63 *
64 * @return int[]|string[] The keys/indices of the collection, in the order of the corresponding
65 * elements in the collection.
66 * @psalm-return list<TKey>
67 */
68 public function getKeys();
69
70 /**
71 * Gets all values of the collection.
72 *
73 * @return mixed[] The values of all elements in the collection, in the
74 * order they appear in the collection.
75 * @psalm-return list<T>
76 */
77 public function getValues();
78
79 /**
80 * Gets a native PHP array representation of the collection.
81 *
82 * @return mixed[]
83 * @psalm-return array<TKey,T>
84 */
85 public function toArray();
86
87 /**
88 * Sets the internal iterator to the first element in the collection and returns this element.
89 *
90 * @return mixed
91 * @psalm-return T|false
92 */
93 public function first();
94
95 /**
96 * Sets the internal iterator to the last element in the collection and returns this element.
97 *
98 * @return mixed
99 * @psalm-return T|false
100 */
101 public function last();
102
103 /**
104 * Gets the key/index of the element at the current iterator position.
105 *
106 * @return int|string|null
107 * @psalm-return TKey|null
108 */
109 public function key();
110
111 /**
112 * Gets the element of the collection at the current iterator position.
113 *
114 * @return mixed
115 * @psalm-return T|false
116 */
117 public function current();
118
119 /**
120 * Moves the internal iterator position to the next element and returns this element.
121 *
122 * @return mixed
123 * @psalm-return T|false
124 */
125 public function next();
126
127 /**
128 * Extracts a slice of $length elements starting at position $offset from the Collection.
129 *
130 * If $length is null it returns all elements from $offset to the end of the Collection.
131 * Keys have to be preserved by this method. Calling this method will only return the
132 * selected slice and NOT change the elements contained in the collection slice is called on.
133 *
134 * @param int $offset The offset to start from.
135 * @param int|null $length The maximum number of elements to return, or null for no limit.
136 *
137 * @return mixed[]
138 * @psalm-return array<TKey,T>
139 */
140 public function slice(int $offset, int|null $length = null);
141
142 /**
143 * Tests for the existence of an element that satisfies the given predicate.
144 *
145 * @param Closure $p The predicate.
146 * @psalm-param Closure(TKey, T):bool $p
147 *
148 * @return bool TRUE if the predicate is TRUE for at least one element, FALSE otherwise.
149 */
150 public function exists(Closure $p);
151
152 /**
153 * Returns all the elements of this collection that satisfy the predicate p.
154 * The order of the elements is preserved.
155 *
156 * @param Closure $p The predicate used for filtering.
157 * @psalm-param Closure(T, TKey):bool $p
158 *
159 * @return ReadableCollection<mixed> A collection with the results of the filter operation.
160 * @psalm-return ReadableCollection<TKey, T>
161 */
162 public function filter(Closure $p);
163
164 /**
165 * Applies the given function to each element in the collection and returns
166 * a new collection with the elements returned by the function.
167 *
168 * @psalm-param Closure(T):U $func
169 *
170 * @return ReadableCollection<mixed>
171 * @psalm-return ReadableCollection<TKey, U>
172 *
173 * @psalm-template U
174 */
175 public function map(Closure $func);
176
177 /**
178 * Partitions this collection in two collections according to a predicate.
179 * Keys are preserved in the resulting collections.
180 *
181 * @param Closure $p The predicate on which to partition.
182 * @psalm-param Closure(TKey, T):bool $p
183 *
184 * @return ReadableCollection<mixed>[] An array with two elements. The first element contains the collection
185 * of elements where the predicate returned TRUE, the second element
186 * contains the collection of elements where the predicate returned FALSE.
187 * @psalm-return array{0: ReadableCollection<TKey, T>, 1: ReadableCollection<TKey, T>}
188 */
189 public function partition(Closure $p);
190
191 /**
192 * Tests whether the given predicate p holds for all elements of this collection.
193 *
194 * @param Closure $p The predicate.
195 * @psalm-param Closure(TKey, T):bool $p
196 *
197 * @return bool TRUE, if the predicate yields TRUE for all elements, FALSE otherwise.
198 */
199 public function forAll(Closure $p);
200
201 /**
202 * Gets the index/key of a given element. The comparison of two elements is strict,
203 * that means not only the value but also the type must match.
204 * For objects this means reference equality.
205 *
206 * @param mixed $element The element to search for.
207 * @psalm-param TMaybeContained $element
208 *
209 * @return int|string|bool The key/index of the element or FALSE if the element was not found.
210 * @psalm-return (TMaybeContained is T ? TKey|false : false)
211 *
212 * @template TMaybeContained
213 */
214 public function indexOf(mixed $element);
215
216 /**
217 * Returns the first element of this collection that satisfies the predicate p.
218 *
219 * @param Closure $p The predicate.
220 * @psalm-param Closure(TKey, T):bool $p
221 *
222 * @return mixed The first element respecting the predicate,
223 * null if no element respects the predicate.
224 * @psalm-return T|null
225 */
226 public function findFirst(Closure $p);
227
228 /**
229 * Applies iteratively the given function to each element in the collection,
230 * so as to reduce the collection to a single value.
231 *
232 * @psalm-param Closure(TReturn|TInitial, T):TReturn $func
233 * @psalm-param TInitial $initial
234 *
235 * @return mixed
236 * @psalm-return TReturn|TInitial
237 *
238 * @psalm-template TReturn
239 * @psalm-template TInitial
240 */
241 public function reduce(Closure $func, mixed $initial = null);
242}