Как обеспечить сосуществование разных версий синтаксиса PHP? ⇐ Php

Кемеровские программисты php общаются здесь
Anonymous
Как обеспечить сосуществование разных версий синтаксиса PHP?

Сообщение Anonymous »

В моем PHP-файле эта строка кода:

Код: Выделить всё

private const string NS_HTML = 'http://www.w3.org/1999/xhtml';
работает только для PHP 8.3 или более поздних версий.
Если я хочу сделать свою библиотеку совместимой с версией 8.2, это единственный способ понизить синтаксис как поступить? т.е.

Код: Выделить всё

private const NS_HTML = 'http://www.w3.org/1999/xhtml';
Чего я действительно хочу добиться, так это какого-то волшебства, например:

Код: Выделить всё

if (PHP_VERSION >= '8.3') {
private const string NS_HTML = 'http://www.w3.org/1999/xhtml';
} else {
private const NS_HTML = 'http://www.w3.org/1999/xhtml';
}
Вы можете возразить, что удаление ограничения типа из константы не имеет большого значения, но я просто привожу простой пример. Еще одна функция версии 8.3, которую я использую, — это атрибут #[Override], и мне бы хотелось сохранить его.
Обновление: на основе ответа из раздела «Как я могу написать код для нескольких версий PHP». в том же файле без ошибок?:
Это будет работать:

Код: Выделить всё

if (\PHP_VERSION_ID >= 803000) {
require_once __DIR__ . '/class-a-php8.3.php';
} else {
require_once __DIR__ . '/class-a-php8.2.php';
}
Пока этого не произойдет:

Код: Выделить всё

if (\PHP_VERSION_ID >= 803000) :
class A {
private const string NS_HTML = 'http://www.w3.org/1999/xhtml';
...
}
else:
class A {
private const NS_HTML = 'http://www.w3.org/1999/xhtml';
...
}
endif;
т.е. разные версии синтаксиса должны находиться в отдельных файлах.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ax-coexist

Вернуться в «Php»