Symfony Advent Calendar 2018 24日目の記事です。(ちょっと遅くなってしまいました)
はじめに
Symfony2系はサポート終了しました。(2.8のセキュリティサポートはあと1年ぐらいあります)
でも、Symfony2で作られたプロジェクトは生きていて、そんなに簡単にSymfony3, Symfony4の新しい構造のプロジェクトに移行はできません。
そこにSymfony経験のない新入社員が来たら…どうします?
フロントエンド界隈の変化ほどじゃないですが、Symfony2→Symfony3→Symfony4はデフォルトのプロジェクト構造にかなり変化があります。
実際にSymfonyを使って開発する人にとっては書く内容は大して変わってないですし、もともとSymfony2で開発していた人がSymfony3, Symfony4に移行するのはそれほど難しくありません。なんといってもSymfonyは2→4の間に複雑さを除く方向に進化したので。
しかし、Symfony未経験の人がチュートリアルとしてSymfony3やSymfony4に入門して、その後にSymfony2の構造で動いているプロジェクトを触るのは、難しいのではないかと思っています。
不要なものとして後に切り捨てられた複雑性を必要とする世界に、不要な世界から戻らされることになります。
そこで、なんとかして 新人さんにはSymfony3.4を使うけどSymfony2.8と同じ構造でSymfonyに入門してほしい と思い、方法を考えました。
Symfonyのバージョンは3.4だけど構造はSymfony2スタイルのプロジェクトを作る
結論から言うと、方法とは、 Symfony2.8のプロジェクトを作ってSymfony3.4にバージョンアップする
です。
Symfony2.8のプロジェクトを作る
symfony/framework-standard-edition
を使い、まずは2.8を指定してプロジェクトを作ります。
$ composer create-project symfony/framework-standard-edition:"~2.8" myproject
Symfony2.8→Symfony3.4バージョンアップの準備
myproject
にできあがるのは、ただのSymfony2.8の空のプロジェクトです。
これをSymfony3.4にバージョンアップしたいのですが、そのためには準備が必要です。
PHPのバージョン変更
composer.json上で require.php
と config.platform.php
を修正して、依存するPHPのバージョンを変更します。
Symfony3.4のcomposer.json を見る限り5.5.9以上、7.0.8以上なら大丈夫そうです。
※ 私の手元の環境で一番古いのがPHP7.1.11だったので、仮で 7.1
にしてあります。
# composer.json
"require": {
- "php": ">=5.3.9"
+ "php": ">=7.1",
// ...
},
# composer.json
"config": {
"platform": {
- "php": "5.6"
+ "php": "7.1",
}
// ...
},
sensio/distribution-bundleのバージョン変更 4.x→5.x
sensio/distribution-bundle
の4.xはSymfony3に対応していないので、5.xに上げます。
$ composer reqiure sensio/distribution-bundle:"~5.0"
Symfony2.8→Symfony3.4バージョンアップ
いよいよSymfonyをバージョンアップします。composer.jsonを編集してからcomposer updateすればOKです。
# composer.json
- "symfony/symfony": "2.8.*",
+ "symfony/symfony": "3.4.*",
$ composer update symfony/symfony
これで完成です!
まとめ
巨大なプロジェクトをどのようにSymfony4に適合させていくか、まだまだ検討中です。
Symfony3.4でしばらく時間を稼ぎたいところです。
サンプルプロジェクト https://github.com/77web/Symfony-update-test