@@ 130-142 (lines=13) @@ | ||
127 | $strategy = Conversions::mixedToValueGetter($strategy); |
|
128 | ||
129 | // Support DateTimeInterface |
|
130 | if ($expected instanceof \DateTimeInterface) { |
|
131 | return function ($value, $key = null) use ($expected, $strategy, $orEqual) { |
|
132 | $value = $strategy($value, $key); |
|
133 | // Try to convert strings that look like ISO date format |
|
134 | if (is_string($value) && preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}/', $value)) { |
|
135 | try { |
|
136 | $value = new \DateTimeImmutable($value); |
|
137 | } catch (\Exception $exception) { |
|
138 | } |
|
139 | } |
|
140 | return $value instanceof \DateTimeInterface && ($orEqual ? $expected <= $value : $expected < $value); |
|
141 | }; |
|
142 | } |
|
143 | ||
144 | // Support numbers |
|
145 | if (is_int($expected) || is_float($expected)) { |
|
@@ 177-189 (lines=13) @@ | ||
174 | $strategy = Conversions::mixedToValueGetter($strategy); |
|
175 | ||
176 | // Support DateTimeInterface |
|
177 | if ($expected instanceof \DateTimeInterface) { |
|
178 | return function ($value, $key = null) use ($expected, $strategy, $orEqual) { |
|
179 | $value = $strategy($value, $key); |
|
180 | // Try to convert strings that look like ISO date format |
|
181 | if (is_string($value) && preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}/', $value)) { |
|
182 | try { |
|
183 | $value = new \DateTimeImmutable($value); |
|
184 | } catch (\Exception $exception) { |
|
185 | } |
|
186 | } |
|
187 | return $value instanceof \DateTimeInterface && ($orEqual ? $expected >= $value : $expected > $value); |
|
188 | }; |
|
189 | } |
|
190 | ||
191 | // Support numbers |
|
192 | if (is_int($expected) || is_float($expected)) { |