Symfony2.3系のシステムを2.8系にバージョンアップしてみた

こんにちは、光永です。
なんと!今回はバリっと技術記事です!えらい!(自画自賛)
開発中のシステムをSyfony2.3系から2.8系にバージョン上げたのでまとめてみました。
別段難しいことはしていませんが、覚書までに。

諸注意

なぜverUPするのか?

端的にいうと、開発しやすいからです。
2.3系は現在もデバッグ・サポートが継続されていますので、
とりあえず開発終了していれば、必ずしもverUpは必要ないでしょう。

ただし、現在進行形のプロジェクトであれば、以下の利点があります。
※追記(2016/6/2) 2.3.42が最終バージョンとなると発表がありました。この機にバージョンアップを!

  • debug環境が大幅に改善された
    • dump()関数の導入
    • なんかむやみやたらとおしゃれになったデバッグパネルおよびデバッグページ
    • ajax通信がデバックパネルに表示され、通信内容をデバックページで表示しやすくなった
    • えとせえとせ
  • フォーム周りの処理が変更され、より開発しやすくなった
  • 便利メソッドがちょっと増えた
    • render($this->generateUrl($route)) => rendirectToRoute($route) など
  • えとせえとせ

やったこと

一旦2.3系最新へverUp

※必要ではないですが、長らくマイナーバージョンを更新していない場合などは
 ソースが本家の改修とぶつかって円バグしている恐れがあります。
 規模の大きいシステムであれば特に、やっておいて損はないと思います。

composer.jsonは以下の通りです

"require": {
    ...
    "symfony/symfony": "2.3.*",
    ...
}

コマンドを実行

composer update

軽く動作確認をしておきましょう。

2.8系へ

※ 実施する前にバックアップを取ってください!失敗したときに泣きます
composer.jsonを書き換え

"require": {
    ...
    - "symfony/symfony": "2.3.*",
    + "symfony/symfony": "2.8.*",
    ...
}

その他いくつか古いバンドル/記載があったので
ver.2.8で作成したプロジェクトのcomposer.jsonを参照し、ついでにupdate

"autoload": {
    + "files": [ "app/AppKernel.php" ]
},
...
"require": {
...
    - "php": ">=5.3.3",
    + "php": ">=5.3.9",
    - "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    + "doctrine/orm": "^2.4.8",
    - "doctrine/doctrine-bundle": "1.2.*",
    + "doctrine/doctrine-bundle": "~1.4",
    - "symfony/monolog-bundle": "2.3.*",
    + "symfony/monolog-bundle": "~2.4",
    - "sensio/distribution-bundle": "2.3.*",
    + "sensio/distribution-bundle": "~5.0",
    - "sensio/framework-extra-bundle": "2.3.*",
    + "sensio/framework-extra-bundle": "^3.0.2",
    - "knplabs/knp-paginator-bundle": "^2.4",
    + "knplabs/knp-paginator-bundle": "^2.5",
},
...
"extra": {
    "branch-alias": {
        - "dev-master": "2.3-dev"
        + "dev-master": "2.8-dev"
    }
},

コマンドを実行

composer update

注意事項

  1. 2.8系から、app.php / app_dev.php / consoleが変更になっています。
  2. 以下のエラーがでます(sensio/distribution-bundle が原因?)
     Unable to find file "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" 
     in @SensioDistributionBundle/Resources/config/routing/webconfigurator.xml 
     (which is being imported from "D:\PhpProjects\JinjiKoukaSystem\app/config/routing_dev.yml")...
    • config_dev.yml / routing_dev.yml に以下の表記がありますのでコメントアウト
      _configurator:
      resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
      prefix:   /_configurator
  3. 心行くまでデバッグしましょう。どこがバグってるともしれません

おまけ

このブログはAtomのMarkdownエディタ機能を使ってかきました

  • なかなか
    • 快適です!
      キャプチャ1

手順

  1. Atomで新規ファイルを作成
  2. Ctrl + Shift + M でマークダウンPreviewが開きます
    キャプチャ2
  3. かきます
  4. プレビューを右クリック→Htmlで出力します
    キャプチャ2
  5. 完成!

以上、参考になっていれば幸いです。光永でした!