Почему константа не определяется?

Есть такой код

<?php
    class Calendar {
        public \DateTimeImmutable $start;
        public \DateTimeImmutable $now;
        public \DateTimeImmutable $end;
        public \DateInterval $calendarInterval;
        public \DateInterval $dayInterval;
        public \DatePeriod $period;

        public function __construct() {
            $this->now = new \DateTimeImmutable();
            $this->calendarInterval = new \DateInterval('P1D');
            $this->dayInterval = new \DateInterval('P1D');
        }

        public function compareObjects(): void {
            $this->start = $this->now->sub($this->calendarInterval);
            $this->end = $this->now->add($this->calendarInterval);
            $this->period = new \DatePeriod($this->start, $this->dayInterval, $this->end, \DatePeriod::INCLUDE_END_DATE);
        }
    }

    $obj = new Calendar();
    $obj->compareObjects();
    foreach($obj->period as $day) {
        echo $day->format('d.m.o l') . "\n";
        echo var_dump($obj->now == $day);
    }

Когда я использую константу \DatePeriod::INCLUDE_END_DATE - то получаю ошибку

PHP Fatal error:  Uncaught Error: Undefined constant DatePeriod::INCLUDE_END_DATE in /var/www/native/src/test.php:19
Stack trace:
#0 /var/www/native/src/test.php(24): Calendar->compareObjects()
#1 {main}
  thrown in /var/www/native/src/test.php on line 19

а когда использую \DatePeriod::EXCLUDE_START_DATE константу из этогго же класса - все работает нормально. Вот вывод

27.02.2024 Tuesday
/var/www/native/src/test.php:27:
bool(true)

Никакой информации об устаревших константах в документации не нашел.

Почему???


Ответы (1 шт):

Автор решения: Алексей Шиманский

Почему когда я использую константу \DatePeriod::INCLUDE_END_DATE - то получаю ошибку

Потому что версия вашего PHP ниже 8.2

→ Ссылка