Добавлена поддержка Symfony 7#37
Open
akrilo wants to merge 8 commits into
Open
Conversation
added 8 commits
May 22, 2026 10:57
…н на legacy и новый.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Контекст/проблема
После добавления поддержки Symfony 7 сборочная линия
pinba-bundleперестала проходить, при этом важно было не потерять совместимость со старыми проектами на PHP 7.4 и Symfony 4/5/6.Проблемы были в нескольких местах:
composer.jsonбыл переведен наphp >=8.2, из-за чего старые проекты на PHP 7.4 больше не могли установить пакет.ext-redis 5.3.7, а актуальныйsymfony/cacheдля Symfony 7.4 конфликтует сext-redis <6.1.strposнаstr_contains; такая замена ломает поддержку PHP 7.4.ext-redis 6, потому в расширении появились строгие сигнатуры методов.Решение и обоснование
Вернул в
composer.jsonподдержкуphp >=7.4, чтобы пакет оставался доступен старым проектам. Для dev-зависимостей использованы расширенные ограничения:nyholm/symfony-bundle-test: ^2.0|^3.1, потому версия 2 нужна для старых Symfony, а версия 3.1 нужна для Symfony 7.friendsofphp/php-cs-fixer: ^3.4, чтобы Composer мог выбрать старую совместимую версию на PHP 7.4 и новую версию на PHP 8.2+.CI разделен на две части:
testsоставлен для PHP7.4/8.0/8.1/8.2и Symfony4.4/5.4/6.2;current-testsдобавлен для PHP8.2/8.3/8.4и Symfony6.4/7.4.Так старые проверки не удаляются, а новая поддержка Symfony 7 проверяется отдельно. Для новой матрицы используется актуальный
ext-redis, потому Symfony 7.4 уже несовместим сredis-5.3.7. Длястарой матрицы
redis-5.3.7сохранен, чтобы не менять условия проверки старых проектов.Для старых Symfony-веток в CI добавлен
composer config audit.block-insecure false. Это сделано только в CI: Composer сейчас блокирует установку старых Symfony из-за известных advisories, но задачаCI здесь — подтвердить совместимость пакета со старыми поддерживаемыми ветками, а не менять политику безопасности для пользователей пакета.
Redis-обертка разделена на две реализации:
ext-redis;ext-redis 6.Это нужно не только для тестов: без такой развилки пакет может падать при загрузке класса на современном
ext-redisиз-за несовпадения сигнатур методовdelete,exec,expireи других.В PHP CS Fixer отключено правило
modernize_strpos, потому оно генерируетstr_contains, недоступный на PHP 7.4. Остальные замечания форматирования исправлены.Риски/ограничения/следующие шаги
Осталось нефатальное предупреждение PHP CS Fixer о deprecated rule
visibility_required. Правило не менялось намеренно, чтобы не сломать совместимость конфигурации со старым PHP CS Fixer, которыйвыбирается в legacy-матрице.
Проверки выполнены на чистой временной копии:
OK (3 tests, 5 assertions).