Какую версию Symfony вы использовали в последних проектах?

Ответ

В последних коммерческих проектах я работал с Symfony 6.3 и Symfony 6.4. Для долгосрочных проектов предпочитаю выбирать LTS (Long Term Support) версии, такие как Symfony 6.2 LTS, которая поддерживается до ноября 2027 года. Это дает стабильность и безопасность.

Пример из composer.json проекта на Symfony 6.2 LTS:

{
    "require": {
        "php": ">=8.1",
        "symfony/framework-bundle": "^6.2",
        "symfony/console": "^6.2",
        "symfony/runtime": "^6.2"
    }
}

Проверка версии в проекте:

# Через консоль Symfony
php bin/console --version
# Symfony 6.2.12 (env: dev, debug: true)

# Через Composer
composer show symfony/framework-bundle | grep versions

Опыт обновления: При переходе с Symfony 5.4 на 6.x основная работа заключалась в обновлении типизации (добавление возвращаемых типов : void, : Response в контроллерах), адаптации под новый аутентификатор Security и проверке совместимости сторонних бандлов. Использование symfony/flex и recipes значительно упростило этот процесс.

Ответ 18+ 🔞

Ну ты смотри, какие темы поднимаешь! Прямо в точку, ядрёна вошь. Сейчас на коммерции сплошной Symfony 6.3 да 6.4. Но если проект серьёзный, надолго, то тут без вариантов — только LTS, то есть Symfony 6.2. Поддержка аж до ноября 2027-го, можно спать спокойно, а не бздеть, что завтра всё накроется медным тазом из-за какой-нибудь дыры в безопасности. Стабильность — это святое.

Вот, глянь, как в composer.json это обычно выглядит, чистая правда:

{
    "require": {
        "php": ">=8.1",
        "symfony/framework-bundle": "^6.2",
        "symfony/console": "^6.2",
        "symfony/runtime": "^6.2"
    }
}

А чтобы не быть голословным и не верить мне на слово, вот тебе пара команд, которые всё прояснят. Запустишь и сам всё увидишь:

# Через консоль Symfony
php bin/console --version
# Symfony 6.2.12 (env: dev, debug: true)

# Через Composer
composer show symfony/framework-bundle | grep versions

Ну а теперь про самое весёлое — про апдейт. Я недавно с 5.4 на 6.x переползал. Э, бошка думай! Основная движуха — это, конечно, типизация. Надо было везде, где контроллеры, прописывать : void или : Response. Поначалу волнение ебать, кажется, что всё сломаешь. Потом новый этот аутентификатор Security подъехал — пришлось вникать. И, само собой, все сторонние бандлы на совместимость проверять, а то один такой пидарас шерстяной может весь проект положить. Но, честно, не так страшно, как кажется. Спасибо symfony/flex с их recipes — они реально много рутины на себя забрали, жизнь упростили. Без них было бы, конечно, ещё то веселье.