symfony勉強会/懇親会に参加してきました
5/15に開催されたsymfony勉強会/懇親会に参加してきました。会場を提供してくださった株式会社ディノさんいつもありがとうございます。
勉強会中の主なトピックスは1.2で変更された部分の話がやっぱり多かったですね。自分は1.2はJobeetでいじりながら、適当に遊んでるレベルなのでもっと使わないとなと身にしみました。あとsymfonyは今後、どのコンテンツも全てクラスベースの概念を使って拡張していく方針になるような気がするからOOPの理解が深めれるフレームワークとしてもウリになるかもしれないなとか感じました。
懇親会ではこんな感じの話題で盛り上がっていた記憶があります。
- sfFormは慣れれば便利
- メンテナンス性は疑問がある
- symfony1.2を実践投入しているところは少ない
- 最近デスマ
- それに付随してクライアントが云々
- 男の子牧場やろうよ!
- カヤックの名刺カッコイイ
かなり睡眠不足だったので、懇親会はちょっと早めに帰ったんですが帰り際にカタンネタで盛り上がってるのちらっと聞こえて、激しく気になりながら帰宅しました。
以下、勉強会中にメモったことをそのまま載せておきます。発表者の方がすでに資料公開してくださっているので各資料記事へのリンクも一緒に書いてます。
sfWebDebugToolbarを拡張してみる
sfWebDebugToolbarの内部
- Symfoniansおなじみのツール
- symfony1.2からそれぞれのパネルがクラス化
- sfWebDebugPanel
- 抽象クラス
- 基本これを継承して拡張
- 既存クラスを拡張するときは既存のクラスを拡張すればおk
- 抽象クラス
- sfWebDebugPanelTimer
- 処理時間を表示するパネル
- sfTimerManager
- sfTimerの管理用クラス
sfWebDebugToolbarの拡張方法
- 基本的なことはcook bookに
- 日本語訳もされてる
- sfEventDispatcherを使用
- カスタムメソッドを生成する
- 今回はconfigureWebDebugToolbarという名前
- sfWebDebugというオブジェクトを返してくる
- このオブジェクトを使ってパネルのカスタマイズを行う
- パネルで表示する情報はsetPanelContentメソッド内でHTMLを組み立てて返す
- 直にやると結構泥臭い作業になっちゃう
- ヘルパー使って構造化すれば対応できそう
- symfony側からは特に何も提供されておらず
- 直にやると結構泥臭い作業になっちゃう
symfony1.2のイベントを使ってみた
- 発表資料
- brtRiverさん
- おやぢ組の人
symfonyの拡張
- Core部分を拡張
- これはやっちゃダメな例
- アップデート時に嵌る
symfonyの拡張方法
- Filter
- 自前クラス(factories.yml)
- Mixin( 1.0.X )
- Event( 1.1.X )
Event
- Mixinでやってたこと+αができるようなもの
- オブザーバーパターン
- PEARでいうEvent_Dispatcher
- sfEventDispatcherを通して
- イベント(sfEvent)を登録
- イベントのリスナー(connect)を登録
- イベントが呼ばれるとリスナーを実行する
Eventの種類
- Notify
- リスナーを順次実行
- NotifyUtil
- trueを返すまで実行
- Filter
- 指定フィルタを実行
拡張例
- 用意されているイベントを調べる
- リスナーを登録する (in configuration file)
- リスナーを実装
- sfEventがわたってきて、getSubjectして例外クラスを取得
- trueを返すとイベントが終わるのでreturn false
- フィルタの登録も可能
- Mixinのようにメソッドを追加することも可能
symfony2ではEventを多用
- RequestHandlerがフィルタにとって代わりそう