Intereting Posts
Восстановить массив из квартиры (где дочерние массивы хранят индекс родительского массива) в многомерном? Doctrine ORM CLI Tool Не работает Разделить строку с даты Как найти элементы в массиве, которые содержат заданную подстроку? Функция запроса cURL GET не возвращает строку PHP: автоматическое сохранение динамического PDF-файла на удаленном сервере с использованием DOMPDF php: запись файла .ics (iCal)? Дата форматирования? PHP: подсчитать одинаковые значения в многомерном массиве Предоставление данных в файл XML Получение записи базы данных, установленной в массив в php Разница между объектом и классом в PHP? Сохранение дополнительных данных в таблицу объединений в методе добавления в CakePHP 3.0 Какая функция в php проверяет правильность строки? Отображение цвета другой границы, если поле действительно Неверный размер ответа COM_STMT_PREPARE. Получено 7. ОШИБКА LARAVEL

Проверка совместимости версий PHP

Как узнать свой код, какая версия языка совместима? Есть ли способ выяснить, является ли минимальная версия языка PHP, которая может выполнять ее без ошибок? Может быть, есть Checker или функция, метод, класс?

Установите версию PHP, которую вы хотите протестировать, и запустите php -l file.php чтобы проверить, проходит ли файл во время проверки. Если PHP не сможет проанализировать файл, он скажет вам.

В общем, вы должны знать, какие функции стали доступны в какой версии. Невзирая на PHP 5.3 с его несколькими версиями патчей, которые добавили существенные улучшения на мгновение, это сводится к пониманию того, какие функции были добавлены с PHP 5.4, 5.5, 5.6 и 7.0, и явно указывая на эту версию в вашем composer.json .

В качестве подсказки: 5.4 имеет синтаксис и черты синтаксиса массива, у 5.5 есть генераторы, и, finally , 5.6 поставляется с вариативными функциями и распаковкой аргументов, а 7.0 имеет типы подсказок и возврата типа скалярного типа. Это помогает использовать среду IDE, которая знает об этих функциях, и предупреждает вас, если вы используете что-то, что не поддерживается в выбранной вами версии.

PHP имеет постоянный PHP_VERSION который содержит текущую версию, на которой вы работаете, и имеет функцию version_compare() которая позволяет легко сравнивать нотацию версии, как в «какой из них больше». Это позволит выполнять разные части кода в зависимости от версии, позволяя добавлять уровни совместимости для некоторых вещей, которые вам нужны, если вы запускаете более низкие версии и используете реализацию PHP (обычно быстрее) при работе в более поздних версиях.

Кроме того, вы всегда будете натыкаться на проблемы с не установленными расширениями. Это не проблема с самой версией PHP. PHP имеет method_exists() function_exists() и method_exists() чтобы определить, можно ли что-то вызывать до того, как вы это сделаете (и сбой с фатальной ошибкой). Вы можете обнаружить это условие ошибки и либо иметь другое решение, либо сообщить пользователю, что он должен что-то добавить к его установке PHP.

Я бы рекомендовал использовать Travis CI для проектов с открытым исходным кодом. В основном вы получаете его бесплатно, и добавление разных версий PHP похоже на добавление новой строки в конфигурационный файл travis.yml. Они также предлагают планы для частных репозиториев. Любая другая установка CI, предлагающая вам множество версий PHP, также будет работать до тех пор, пока вы запускаете свой код на всех версиях PHP, которые вы собираетесь поддерживать.

Окончательное предложение: поддержка Drop для PHP 5.3 и 5.4. Эти версии не обслуживаются (или оставляют фиксированную фазу безопасности только через 2 месяца) и больше не должны быть нацелены.

Скорее всего, вам нужно установить разные версии PHP. Затем вы можете проверить совместимость своего кода с указанной версией PHP с помощью оболочки:

 find . -name *.php | xargs -n1 /usr/bin/php -l 

Команда php -l запускает PHP только в режиме проверки синтаксиса. В приведенной выше команде будет проверяться, что каждый файл PHP в вашем проекте снова совместим с версией PHP, расположенной в / usr / bin / php.

https://3v4l.org/

Этот онлайн-инструмент показывает ваш вывод кода для более чем 150 различных версий PHP (каждая версия выпущена с версии 4.3.0) плюс HHVM.

Не уверен, достаточно ли для ваших целей.