symfony勉強会レポート


本日、symfony勉強会/懇親会に参加してきました。

symfony勉強会/懇親会 - events.php.gr.jp

ブログに書くまでが勉強会らしいので、お酒で頭が働かない中、頑張って更新します。


1. sfWebDebugToolBarを拡張してみる (id:Fivestarさん)

sfWebDebugToolberの内部

sfWebDebugToolberとは
  • symfonyで開発をしてる人にとっては、お馴染みのツール。
  • symfonyや、PHPの設定や、ログの確認が簡単に出来る。
1.2で変わったこと
  • それぞれのパネルがクラス化した。
  • よって、拡張が容易になった。

拡張の仕方

  • sfWebDebugPanelクラス(アブストラクト)を継承することで拡張。
  • 実装しなければならないメソッドは、以下。
    • getTitle()
    • getPanelContents()
    • getPanelTitle()
sfWebDebugPanelTimer

処理にかかった時間を計測して表示。

  • sfWebManager::getTimer($name)で、計測を開始し、sfTimer::addTime()でgetTimerからの時間を取得する。
  • 任意の箇所に、それらを置けばOK


2. symfony1.2のイベントを使ってみた (id:brtRiverさん)

Event

フレームワーク以上のことをやろうとすると、コアをいじりたくなるが、それは良くない。

今までも、コアの拡張のためのものはあった。

    • フィルター(filters.ymlに追加)
    • 自前クラス(factories.ymlに追加)
    • Mixin(1.0.x)
    • Event (1.1.x〜)

Mixin

  • 多重継承っぽい拡張が出来る。
  • マジックメソッドを使ってる。

Event

symfonyのEventは、observerパターン。
以下のメソッドが定義

  • Notify
  • NotifyUntil
  • Filter

symfony2

symfony2では、Eventが多用される。





3. ルーティングを使ってシンプルなアプリケーション開発を(id:co3kさん)

アクションを統一しよう

  • アクションで、毎回リクエストのチェックを行うのは、良くない。
  • 命名規則などが、同じプロジェクトで違うと意味分からない。

レコード取得をアクション側で行わないようにする。

  • ルーティングの段階で行う。
  • preExecute()で、それをプロパティに入れると楽出きるかも。
  • バリデーションの処理は、sfRouteCollectionで共通化


LT.sfMobileIPPlugin作った (id:botさん)

sfMobileIpPluginとは

  • IPアドレスから形態キャリアを判定
  • 連続IPアドレス体を結合
  • 32ビット整数で表示。
    • 比較を単純なif文で出きるようになる。
  • IPアドレスは、ymlファイルで指定。
    • 開発機などのIPを携帯用IPとして登録出来て、開発に便利!


最初、始まる5分前まで5人しかいなかった時はどうしようかと思いましたが、おもしろい内容の勉強会でした。
フレームワークは、自作するのが好きなんですが、3つの発表全てが参考になりました。特に、3番目のルーティングの部分は、自作フレームワークでやろうと思っていた事なので、是非参考にしてみたいと思います。
また、sfMobileIPPluginは、32バイト整数に変換する所とか、開発の事も考えた機能がとてもいい感じでした。
懇親会もすごく楽しかったので、また次も参加して行きたいと思います。