この前、Symfonyを2.3 に上げたばかりだというのに、Symfony2.4 beta-1
が出るようです。正直 2.0 → 2.3 は差分を見るのが大変辛かった。これを反省に
チマチマ何が増えたり減ったりしたか、ちゃんと見ていくことにしたいです。
2.3からの変更が必要な箇所
Form
- IntegerToLocalizedStringTransformer のコンストラクタである $precision は完全に無視されます。なぜならば、精密さは integer にとって必要ないからです。
また、Formの変更か!と思いつつ、今のところ、これまでの動きを破壊するのは
これくらいのようです。
IntegerToLocalizedStringTransformer は NumberToLocalizedStringTransformer の子クラスです。この
NumberToLocalizedStringTransformer は、数値の切り上げ、切り捨てなどを
担当するようです。integer は、整数だからつかわんよねー。ということで、
強制的に内部で 0 になるように変更になっていました。
2.4での新機能 (現時点)
Console Component の改良
http://symfony.com/blog/new-in-symfony-2-4-console-improvements?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+symfony%2Fblog+(Symfony+Blog)
ちまちまPHPでツールを作る身として、嬉しいのは Console Component
の改良でしょう。Console Component は、PHPUnit といった幅広いツールで
利用されているコンポーネントです。
その高機能っぷりは、もはやPHPでコンソールツールを作るときの、
デファクト・スタンダードではないかと思います。
- Command において、 parent::__construct() を呼ぶのを忘れた時に、マシなエラーメッセージが出るようにした。
- TableHelper に、よりコンパクトなレイアウトが登場。
- Verbosity オプションが付けられているかどうかを判定する便利メソッドが登場
- Terminal Dimensions (ターミナルの大きさ) を設定する方法が登場
- サービスタグ (console.command) によりコマンドを追加する方法が登場
Verbosity を判定する方法の追加は、もっとスマートに書けないかと思っていたので
ありがたい変更です。
また、サービスタグによるコマンドの追加については、ブログにて
This new way of registering commands plays nicely with the old ways (via auto-discovery in the bundles.) and you can mix and match both.
と、Fabian が申しているので、古い方法である、特定の名前の名前空間に
コマンドクラスを定義していく方法とは、併用が可能のようです。
Callback constraintの表現簡略化
http://symfony.com/blog/new-in-symfony-2-4-a-better-callback-constraint
validation で、汎用でない特定のエンティティ用の複雑なロジックを利用する場合、
Callback constraint が便利です。が、今まではちょっと複雑だったよね
ということで、もうちょっと簡単に表現できるようになりました。
Yaml だと、そんなに大差無いと思います。一方、Annotation だと
今までクラス部分に対して宣言していたものが、バリデーションのメソッドに対して
つくようになりました。どれがバリデーションメソッドかが、ひと目でわかります。
Annotation厨歓喜。
DowCrawler Component で名前空間の扱いが便利に
http://symfony.com/blog/new-in-symfony-2-4-namespaces-auto-discovery-in-dowcrawler
今まで、名前空間を考慮したデータの取得には苦労していたようですが、
名前空間について、そこまで心配せずともデータを取得する方法が登場しました。