1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
-
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Symfony\Component\Finder\Comparator;
-
- /**
- * DateCompare compiles date comparisons.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
- class DateComparator extends Comparator
- {
- /**
- * @param string $test A comparison string
- *
- * @throws \InvalidArgumentException If the test is not understood
- */
- public function __construct(string $test)
- {
- if (!preg_match('#^\s*(==|!=|[<>]=?|after|since|before|until)?\s*(.+?)\s*$#i', $test, $matches)) {
- throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a date test.', $test));
- }
-
- try {
- $date = new \DateTime($matches[2]);
- $target = $date->format('U');
- } catch (\Exception $e) {
- throw new \InvalidArgumentException(sprintf('"%s" is not a valid date.', $matches[2]));
- }
-
- $operator = $matches[1] ?? '==';
- if ('since' === $operator || 'after' === $operator) {
- $operator = '>';
- }
-
- if ('until' === $operator || 'before' === $operator) {
- $operator = '<';
- }
-
- parent::__construct($target, $operator);
- }
- }
|