2013/12/3に、Symfony2.4が正式にstable(安定版)としてリリースされました。
http://symfony.com/blog/symfony-2-4-0-released
デバッグツールバーのFormパネル、セキュリティ(認証)カスタマイズの柔軟性アップなど、(開発者に)嬉しい機能が新たに追加されています。
私も早速、Symfony2.3を使って開発したプロジェクトをSymfony2.4に対応させてみました。(諸事情あって本番サーバーには適用できなかったので飽くまで実験として、ですがorz)
まず、変更したのはcomposer.jsonです。symfony/symfonyを"2.3.*"(2.3系列)から"~2.3"(2.3以上)に変更します。
- "symfony/symfony": "2.3.*"
+ "symfony/symfony": "~2.3"
サードパーティのバンドルを何も入れていない場合は、ここまででcomposerでsymfony/symfonyをupdateすればそれで完了です。
$ composer update symfony/symfony
あとは、自分の書いたバンドルについて2.4でエラーが出るようなら修正しましょう。
私はKnpPaginatorBundleを入れていたので、デバッグモードでEventDispatcherが変更されたことによる影響をもろに受けて、paginatorを使う一覧系ページが軒並みエラーになりました…。
Argument 1 passed to Knp¥Component¥Pager¥Paginator::__construct() must be an instance of Symfony¥Component¥EventDispatcher¥EventDispatcher, instance of Symfony¥Component¥HttpKernel¥Debug¥TraceableEventDispatcher given,
エラーメッセージでGoogle検索すると割とすぐに「もう修正されてるよ」という情報が出てくるのですが、
https://github.com/symfony/symfony/issues/9089
https://github.com/KnpLabs/knp-components/pull/68
https://github.com/KnpLabs/knp-components/pull/88
https://github.com/KnpLabs/KnpPaginatorBundle/issues/223
KnpPaginatorBundleとKnpComponentsの修正された部分がまだKnpLabsから正式版としてリリースされていないために、単にupdateしても「新しいリリースがないよ」という趣旨のエラーメッセージが出て終わってしまいます。
色々試行錯誤したりソースを読んだりした末、
KnpComponentsは1.2.4以上、KnpPaginatorBundleはmasterを使わなくてはいけないということがわかりました。
そこで、composer.jsonにバージョンを指定します。
- "knplabs/knp-paginator-bundle": "2.3.*",
+ "knplabs/knp-components": "~1.2.4",
+ "knplabs/knp-paginator-bundle": "dev-master",
knp-paginator-bundleのdev-masterだけ指定すると、knp-componentsのバージョンが自動的に1.2.3になってしまうのでknp-paginator-bundleより先にknp-componentsを1.2.4以上として指定しました。
(私はこの組み合わせを見付けるのに2時間もかけてしまいました…orz)
もしminimum-stabilityをstableにしている場合は、もう一点、composer.jsonの変更が必要です。
knp-componentsがまだ安定版じゃないので、stable指定だとせっかくのベストな組み合わせが弾かれてしまいます。stableでなくdevを指定し、かつprefer-stableをtrueにすることで弾かれないようにします。
- "minimum-stability": "stable",
+ "minimum-stability": "dev",
+ "prefer-stable": true,
ここまで来たら、後はcomposer updateするだけです。
なお、KnpPaginatorBundleやKnpComponentsのリリース状況によっては、この指定は不要になる予定です。
早く1.2.4を安定版にしてよ〜と叫んでる人がKnpComponentsのissueにたくさんいるので早晩リリースされるでしょう。たぶん。
が、それまで待てないという方は、ぜひ上記の組み合わせをお試しください。