Проверяем PHP код на совместимость с конкретной версией PHP

Главные вкладки

ivnish 6 сентября 2022 в 9:02
6

Появилась задача проверить PHP код на совместимость с конкретной версией PHP.

Для этого нам понадобятся пакеты drupal/coder и phpcompatibility/php-compatibility, установим их

composer require --dev drupal/coder phpcompatibility/php-compatibility

Запустим проверку контрибных модулей проекта на совместимость с PHP 8.0

./vendor/bin/phpcs -p ./web/modules/contrib/ --standard=PHPCompatibility --extensions=module/php,inc/php,install/php,php/php --runtime-set testVersion 8.0

Несколько лет назад у меня было несколько сайтов на поддержке, где был модуль submenutree. После перехода на PHP 7.2 он перестал корректно работать из-за того, что функцию each() признали устаревшей. Я сымитировал эту ситуацию сейчас и PHPCompatibility успешно отработал эту проблему.

Мы планируем повышать версии PHP для работы drupal.ru и этот инструмент нам будет помогать

Автор

ivnish Drupal FullStack Developer

Комментарии

Аватар пользователя jura12 jura12 7 апреля 2023 в 16:57

чем меньше модулей используешь тем легче управлять сайтом. а новые возможности надо писать на javascript :). это мой стиль поддержки сайта, 14й опыт администрирования друпала.

P.S. сторонние разработчики (нанятые профессионалы). не улучшают, а ухудшают код.

Аватар пользователя jura12 jura12 14 апреля 2023 в 20:13

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

Аватар пользователя madt madt 14 апреля 2023 в 20:51

Это проблема общая, не только российских и не только программистов. Но, мы уже ушли в глубокий оффтоп. Это тема для обсуждения в отдельном топике.