tgoop.com/phpproglib/5145
Last Update:
Обновление Symfony 2.8 до версии 7.2 по проторенной дорожке
Обновление проектов на Symfony можно проводить двумя способами. Первый подразумевает использование только UPGRADE.md файлов при каждом релизе, заменяя устаревшие функции новыми. Такой подход позволяет поддерживать проект в актуальном состоянии, но его возможности ограничены. Второй подход более комплексный: он не только учитывает изменения, но и использует все современные функции фреймворка. Это делает код быстрее, проще в понимании и готовым к следующим обновлениям. Второй способ предпочтителен, так как повышает удобство работы с проектом и его дальнейшую поддержку.
Основные этапы обновления Symfony
1. Учет версий PHP и Symfony
Перед обновлением важно проверить совместимость версий Symfony и PHP. Например, Symfony 5.4 — последняя версия, поддерживающая PHP 7.4. Если проект работает на этой версии PHP, необходимо сначала обновить Symfony до 5.4, а затем перейти на PHP 8.0, чтобы продолжить обновление до Symfony 6.
2. Обновления в Symfony 3
🔸Новая структура каталогов. Вместо папок /app
и /Resources
все файлы теперь располагаются в корне проекта.
🔸Инъекция зависимостей через конструктор. Переход от использования глобального контейнера ($this->get('service')
) к внедрению зависимостей в конструкторе. Этот шаг значительно упрощает архитектуру.
🔸Автозагрузка и автоконфигурация сервисов. С помощью _defaults: autowire: true
можно сократить настройки в services.yml
.
🔸Разделение монорепозитория. Вместо зависимости symfony/symfony
рекомендуется добавлять в проект только те пакеты Symfony, которые действительно используются.
3. Нововведения Symfony 4
🟢PSR-4 автозагрузка сервисов. Можно автоматически регистрировать все классы из определенной директории, вместо ручной регистрации каждого сервиса.
🟢Переход с YAML на PHP для конфигураций. PHP-конфиги более удобны для работы с инструментами статического анализа и проверки на устаревшие методы.
4. Symfony 5 и новые атрибуты
От аннотаций к атрибутам. С версии 5.2 поддерживаются PHP-атрибуты, такие как #[Route]
и #[Required]
, что упрощает написание и понимание кода.
Новая система аутентификации. Вместо Guard используется более современный механизм, представленный в Symfony 5.3.
5. Symfony 6 и 7
На версиях Symfony 6 и 7 акцент сделан на улучшение синтаксиса и использование новых возможностей PHP 8. Например:#[TaggedIterator]
позволяет автоматически внедрять набор сервисов.#[Autowire]
упрощает передачу переменных окружения в сервисы.
BY Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Share with your friend now:
tgoop.com/phpproglib/5145