Phpversion: примеры (PHP)

Использование phpversion для получения версии PHP
Раздел: Информация о PHP
phpversion(?string $extension = null): string|false
Описание функции phpversion

Функция phpversion возвращает строку с текущей версией интерпретатора PHP. Эта функция применяется для проверки установленной версии PHP во время выполнения скрипта, что важно для обеспечения совместимости кода с конкретными возможностями языка.

Функция имеет один необязательный параметр:

  • $extension (string) — имя расширения. Если указано, функция вернёт версию этого расширения, или false, если расширение не загружено.

Без параметра функция возвращает строку с номером версии PHP, например, '8.2.10'.

Базовые примеры использования
Получение версии PHP
<?php
echo phpversion();
?>
8.2.10
Получение версии расширения
<?php
$json_version = phpversion('json');
if ($json_version) {
    echo "Версия расширения JSON: {$json_version}";
} else {
    echo "Расширение JSON не загружено.";
}
?>
Версия расширения JSON: 1.7.0
Похожие функции в PHP
  • PHP_VERSION — предопределённая константа, содержащая версию PHP. Отличается от функции тем, что возвращает версию, с которой был скомпилирован интерпретатор, и не может проверить версию расширения.
  • version_compare() — функция для сравнения номеров версий. Часто используется вместе с phpversion() или PHP_VERSION для условного выполнения кода в зависимости от версии.
  • phpinfo() — выводит обширную информацию о конфигурации PHP, включая версию. Используется для отладки, а phpversion() — для получения только номера версии программным способом.
Аналоги в других языках

Phpversion в Python

import sys
print(sys.version)
3.11.4 (main, Jun 20 2023, 17:23:00)
JavaScript (Node.js)
console.log(process.version)
v18.17.0

Phpversion в MySQL

SELECT VERSION();
8.0.34

В отличие от PHP, в этих языках обычно нет встроенной функции для проверки версии конкретного модуля через единый интерфейс.

Типичные ошибки
Ожидание булевого значения
<?php
// Неправильно: функция всегда возвращает строку или false, а не true.
if (phpversion()) {
    echo "Версия получена";
}
// Правильно: явная проверка на false.
if (phpversion('imagick') !== false) {
    echo "Расширение imagick загружено";
}
?>
Версия получена
Сравнение версий как строк
<?php
// Неправильное строковое сравнение.
if (phpversion() >= '8.2') { 
    echo "Версия 8.2 или выше";
}
// Правильное сравнение через version_compare.
if (version_compare(phpversion(), '8.2', '>=')) {
    echo "Версия 8.2 или выше";
}
?>
Версия 8.2 или выше
Изменения в PHP 8

В PHP 8 функция phpversion() не претерпела значительных синтаксических изменений. Основные отличия связаны с возвращаемыми значениями для расширений, которые теперь могут иметь семантическое версионирование. Также в целом повышена стабильность и производительность функции.

Расширенные примеры
Условная загрузка кода
Пример php
<?php
// Проверка версии перед использованием новой функциональности.
if (version_compare(phpversion(), '8.1.0', '>=')) {
    // Код с использованием нововведений PHP 8.1.
    enum Status { case Active; case Inactive; }
    echo "Используется PHP 8.1+";
} else {
    echo "Требуется обновление PHP";
}
?>
Используется PHP 8.1+
Проверка нескольких расширений
Пример php
<?php
$required_extensions = ['pdo_mysql', 'mbstring', 'xml'];
foreach ($required_extensions as $ext) {
    $ver = phpversion($ext);
    echo $ver ? "{$ext}: {$ver}" : "{$ext}: не загружено";
    echo "\n";
}
?>
pdo_mysql: 5.7.0
mbstring: 2.0
xml: 2.9.0
Логирование версий
Пример php
<?php
// Запись информации о версиях в лог.
$log_entry = date('Y-m-d H:i:s') . " | PHP: " . phpversion() . 
              " | JSON: " . phpversion('json') . PHP_EOL;
file_put_contents('version_log.txt', $log_entry, FILE_APPEND);
?>
// Содержимое файла version_log.txt
// 2024-01-15 14:30:00 | PHP: 8.2.10 | JSON: 1.7.0

PHP phpversion function comments

En
Phpversion Gets the current PHP version