Symfony LTS: как обновиться с 2.8 до 3.4? - PullRequest
0 голосов
/ 18 сентября 2018

Symfony 2.8 является последним выпуском ветви 2.x и предыдущей LTS.

Symfony 3.4 является последним выпуском ветви 3.x и текущей LTS.

Чтонеобходимы шаги для обновления Symfony с 2.8 до 3.4 и переключения на этот последний LTS?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

2019 + Мгновенное обновление Версия

Сегодня вы можете автоматизировать большую часть работы с помощью инструмента мгновенного обновления под названием Ректор (я автор).Он подготовил наборы для многих фреймворков, наиболее полными из которых являются Symfony.Также включите обновление PHP, которое вам может понадобиться.

Подробнее об этом конкретном пути обновления вы можете прочитать в: Как обновить Symfony 2.8 до 3.4

0 голосов
/ 18 сентября 2018

Подготовка к обновлению

Убедитесь, что все зависимости и пакеты, перечисленные в composer.json, опубликовали версию, совместимую с Symfony 3.4, это можно сделать, выполнив поиск по каждому пакету в Packagist, например, EasyAdmin совместим с Symfony 3, поскольку зависимости в requires не ограничиваются Symfony 2 (мы увидим что-то вроде symfony/*: ~2.3).Если одна из зависимостей несовместима с Symfony 3, вам придется найти пакеты для замены или исправить эти библиотеки.

composer.json

Чтобы обновить приложение из Symfony 2.8 в Symfony 3.4 вам придется обновить свои зависимости, изменив файл composer.json :

([…] означает неизменный код)

Старый ( 2.8 ) версия:

{
    […]
    "autoload-dev": {
        "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
     },
    "require": {
        "php": ">=5.3.9",
        "doctrine/doctrine-bundle": "~1.4",
        "doctrine/orm": "^2.4.8",
        "incenteev/composer-parameter-handler": "~2.0",
        "sensio/distribution-bundle": "~4.0",
        "sensio/framework-extra-bundle": "^3.0.2",
        "symfony/monolog-bundle": "^3.0.2",
        "symfony/swiftmailer-bundle": "~2.3,>=2.3.10",
        "symfony/symfony": "2.8.*",
        "twig/twig": "^1.0||^2.0"
    },
    "require-dev": {
        "sensio/generator-bundle": "~3.0",
        "symfony/phpunit-bridge": "~2.7"
    },
    "config": {
        "bin-dir": "bin",
        "platform": {
            "php": "5.6"
        },
        "sort-packages": true
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "symfony-assets-install": "relative",
        […]
        "branch-alias": {
            "dev-master": "2.8-dev"
        }
    }
}

Новая ( 3.4 ) версия:

{
    […]
    "autoload-dev": {
        "psr-4": { "Tests\\": "tests/" },
        "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
     },
    "require": {
        "php": ">=5.5.9",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/orm": "^2.5",
        "incenteev/composer-parameter-handler": "^2.0",
        "sensio/distribution-bundle": "^5.0.19",
        "sensio/framework-extra-bundle": "^5.0.0",
        "symfony/monolog-bundle": "^3.1.0",
        "symfony/polyfill-apcu": "^1.0",
        "symfony/swiftmailer-bundle": "^2.6.4",
        "symfony/symfony": "3.4.*",
        "twig/twig": "^1.0||^2.0"
    },
    "require-dev": {
        "sensio/generator-bundle": "^3.0",
        "symfony/phpunit-bridge": "^3.0"
    },
    "config": {
        "platform": {
            "php": "5.6"
        },
        "sort-packages": true
    },

    "extra": {
        "symfony-app-dir": "app",
        "symfony-bin-dir": "bin",
        "symfony-var-dir": "var",
        "symfony-web-dir": "web",
        "symfony-tests-dir": "tests",
        "symfony-assets-install": "relative",
        […]
        "branch-alias": {
            "dev-master": "3.4-dev"
        }
    }
}

Сводка

  • autoload-dev.psr-4 добавлено (его нужно изменить путем указания пути к каталогу тестов)
  • Обновлены Symfony и зависимости
  • symfony/polyfill-apcu - это новая зависимость
  • extra было обновлено, чтобы использовать новую структуру каталогов: var для временных файлов и т. Д.
  • config.bin-dir было удалено

Подробнее об обновлениях: → 3,0 , → 3,1 , → 3,2 , → 3,3 , → 3,4

приложение/ AppKernel.php

Добавление getRootDir и обновление registerContainerConfiguration функций:

public function getRootDir()
{
    return __DIR__;
}

public function registerContainerConfiguration(LoaderInterface $loader)
{
    $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}

Кэш и журналы

Если вы хотите поместить cache и logs вvar/, вам необходимо обновить файл app/AppKernel.php, добавив следующие строки:

public function getCacheDir()
{
    return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
public function getLogDir()
{
    return dirname(__DIR__).'/var/logs';
}

Затем создайте каталог var/ и поместите пустой файл .gitkeep

Ипримените эти изменения к вашему .gitignore файлу:

/var/cache/*
/var/logs/*
!var/cache/.gitkeep
!var/logs/.gitkeep

Заключительные шаги

После того, как вы обновите файл composer.json , вы должны обновить зависимости:

composer update

Затем может потребоваться очистить кэш:

php app/console cache:clear --env=dev

Примечание. Я использовал следующую команду для получения файлов composer.json :

# create Symfony "2.8.*" project in the "2.8" directory
composer create-project symfony/framework-standard-edition "2.8" "2.8.*" --no-interaction -v
# create Symfony "3.4.*" project in the "3.4" directory
composer create-project symfony/framework-standard-edition "3.4" "3.4.*" --no-interaction -v
# compare the Symfony 2.8 and 3.4 composer.json files
diff -u 2.8/composer.json 3.4/composer.json

Дифференциал доступен также на GitHub .

Бонус: включение автопроводки услуг .

...