TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Определите минимальную версию PHP для вашего кода?

867

PHP CompatInfo  инструмент CLI. Это инструмент для целых проектов. Хотя он не запускает ваш код на старом PHP, он знает, как он будет работать, так как он анализирует языковые конструкции и ваш синтаксис, чтобы найти минимальную требуемую версию PHP. Я считаю, что каждый разработчик должен иметь этот инструмент в своем распоряжении, прежде чем выпускать производственный код,  в плагинах или темах WordPress.

Установка и запуск PHP CompatInfo

К сожалению, этот инструмент не для слабонервных. Он работает на Linux. Для меня это означало значительную кривую обучения, но поверьте мне, это того стоит. Вы можете получить Ubuntu, работающий на виртуальной машине, чтобы облегчить использование этого инструмента. Другие варианты включают Linux-машину (самой дешевой – Raspberry Pi) или VPS с доступом по SSH (возможно, вы уже платите за что-то подобное). Я использую Ubuntu + VM, и основываю остальную часть статьи на этом. Мы собираемся определить минимальную версию самого WordPress. Это не так уж плохо!

  • Загрузите WordPress и PHP CompatInfo, чтобы ваша папка «Загрузки» выглядела следующим образом:

Окно файлов Ubuntu с PHP CompatInfo для определения минимально необходимой PHP-версии WordPress

  • Извлеките WordPress или ваш проект.
  • Откройте терминал из контекстного меню окна «Файлы» (в разделе «Загрузки»).
  • Помните, чтобы использовать функции копирования и вставки в терминале, используйте Ctrl+ Shift+ V и аналогичные.
  • Если у вас нет PHP, запустите их по порядку – укажите свой пароль и ответьте yes Y:
sudo apt update sudo apt install php7.2-cli sudo apt install php7.2-sqlite3

Затем вы можете сразу запустить это, и вы найдете отчет в файл после завершения процесса.

php phpcompatinfo-5.0.12.phar analyser:run . --output=compatinfo.log

Если вам нравится инструмент и вы хотите, чтобы он был доступен в качестве общесистемной команды, выполните также следующее:

chmod +x phpcompatinfo-5.0.12.phar sudo mv phpcompatinfo-5.0.12.phar /usr/local/bin/phpcompatinfo

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

phpcompatinfo analyser:run . --output=compatinfo.log

Определение минимально необходимой версии PHP на основе файла журнала

Открыв журнал, вы увидите очень подробный анализ вашего кода. Вот список того, что он делает для вас, я считаю, это волшебно:

  • Он показывает, сколько файлов и папок имеет ваш проект.
  • Анализирует расширения PHP, которые вы используете, такие как CURL или SimpleXML.
  • Перечислите свои пространства имен, интерфейсы, черты, если таковые имеются.
  • Анализ классов
    • Создайте список каждого класса и сколько раз вы их используете.
    • Общее количество различных классов, которые вы используете.
    • Кроме того, он указывает, является ли класс вашим собственным, базовым или является расширением.
  • Анализ функций
    • Когда и какая функция когда-либо использовалась и сколько раз.
    • Общее количество функций.
    • Кроме того, он показывает, является ли функция вашей или от стороннего производителя (ядро / расширение).
    • Вы можете увидеть анонимные функции (замыкания), например: «замыкание-125-129». Это означает, что некоторый файл имеет функцию из строки 125 или 129, но он не говорит вам, какой файл.
  • Анализ констант предоставляет полный список констант, счетчиков использования, общего количества и их происхождения.
  • Условия анализа списков каждый вызов. функции в дальнейшем определить, какие функции вы используете.class_exists()``defined()``extension_loaded()``function_exists()``interface_exists()``method_exists()

Конечно, для каждого пространства имен, интерфейса, черты, класса, функции, константы и условия требуется детализированный минимум требуемых данных версии PHP. Посмотрите на самый конец файла, где вы найдете рассчитанную общую минимальную версию PHP.

В столбце PHP all указывается, какая версия требуется, когда используются все функции кода.

Пример результатов

Для WordPress 5.0.2 результат говорит:

https://techblog.sdstudio.top/test-code-older-php-without-downgrade/

Вот сгенерированный файл в качестве примера, чтобы вы знали, чего ожидать.

Если бы это было для меня в новинку, мне было бы интересно узнать все эти статистические данные о моем творении. Просто для удовольствия, я запустил его для некоторых популярных плагинов:

  • Yoast SEO 9.3
    Требуется PHP 5.5.0 (мин), но они указывают 5.2.4 или выше.
  • Jetpack 6.8.1
    Требуется PHP 5.6.0beta1 (мин).
  • Jusified Image Grid v3.9.2
    Требуется PHP 5.2.1 (мин), PHP 5.3.0 (все).
  • Форма обратной связи 7.5.1.1
    Требуется PHP 5.3.0 (мин).
  • WooCommerce 3.5.3
    Требуется PHP 5.6.0beta1 (минимум), PHP 5.6.33 (максимум).
  • Хорошо, я сейчас остановлюсь, это даже не определение веселья. ????

Почему он может показывать версию, отличную от официального требования?

Это трудно сказать, но, пожалуйста, обратите внимание, что инструмент очень умный. Например, внимательно посмотрите на страницу документации для ob_start () и особенно параметр flags. В нем упоминается, что вы можете использовать константы, такие PHP_OUTPUT_HANDLER_CLEANABLEкак показанные сверху, которые доступны уже некоторое время, и они доступны в PHP 4, PHP 5, PHP 7. Легко не заметить, что константы были добавлены только в PHP 5.4 ! Только если вы подвергаете сомнению буквально все, вы найдете эту страницу и воздержитесь от использования таких констант, если вам, к сожалению, требуется поддержка PHP 5.3. Хотя это всего лишь пример, вы получите представление о том, какой дотошной являетсяob_start()база данных PHP CompatInfo. Вот как все прописано в этом:

{ "ext_name_fk": 7, "name": "PHP_OUTPUT_HANDLER_CLEANABLE", "ext_min": "5.4.0", "ext_max": "", "php_min": "5.4.0", "php_max": "", "php_excludes": "" },

Является ли PHP CompatInfo заслуживающим доверия?

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

Источник записи: https://letswp.io

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее