Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

sfWebDebugToolbarを 拡張してみる

1,318 views

Published on

symfony勉強会/懇親会発表資料
「sfWebDebugToolbarを 拡張してみる」

Published in: Technology
  • Be the first to comment

  • Be the first to like this

sfWebDebugToolbarを 拡張してみる

  1. 1. sfWebDebugToolbarを 拡張してみる symfony勉強会/懇親会 OGAWA Katsuhiro a.k.a. fivestar 1
  2. 2. 自己紹介 • HN: fivestar • 名前: 小川雄大(OGAWA Katsuhiro) • 所属: アシアル株式会社 http://d.hatena.ne.jp/Fivestar/ http://wassr.jp/user/fivestar 2
  3. 3. アジェンダ • sfWebDebugToolbarの内部 • sfWebDebugToolbarの拡張方法 • 拡張実践 3
  4. 4. sfWebDebugToolbarの 内部 4
  5. 5. sfWebDebugToolbar • Symfoniansお馴染みの開発ツール • symfonyやPHPの設定、ログの確認など 5
  6. 6. symfony 1.2 で変わったこと • それぞれのパネルがクラス化 – sfWebDebugPanel • sfWebDebugPanelSymfonyVersion • sfWebDebugPanelConfig • sfWebDebugPanelLogs • などなど • 拡張が容易に 6
  7. 7. sfWebDebugPanel • getTitle() – Toolbarに表示されるHTML • getPanelContent() – クリックされた時に表示されるHTML • getPanelTitle() – クリックされた時に表示されるHTMLのタイト ル 7
  8. 8. sfWebDebugPanelTimer • 処理にかかった時間を計測し表示 8
  9. 9. sfTimerManager • getTimer($name) – sfTimerの取得 • なければ作成し、自動的に計測を開始 – $name => Panelのtype – sfTimerManager::getTimer(‘Database (Doctrine)’) 9
  10. 10. sfTimer • addTime() – sfTimerManager::getTimer()を最初に実行してか らの経過時間を記録 – 呼び出された回数 => Panelのcalls 10
  11. 11. sfTimerの追加 • 計測を開始したいタイミングで sfTimerManager::getTimer($name)を実行 • 後は経過時間を記録したいタイミングで sfTimerManager::getTimer($name) ->addTime() を実行 • 上記を任意の場所に記述しておけばOK 11
  12. 12. sfWebDebugToolbarの 拡張方法 12
  13. 13. パネルの拡張 • 基本的なことはThe symfony Cookbookに – 日本語翻訳済み • 上記とほぼ同じ内容です 13
  14. 14. パネルの拡張 • sfEventDispatcherを使用 – $this->dispatcher->connect( 'debug.web.load_panels', array($this, 'configureWebDebugToolbar')) • Configurationクラスのconfigure()に上記を 記述すると、configureWebDebugToolbar() で拡張が可能に 14
  15. 15. パネルの拡張 • configureWebDebugToolbar(sfEvent $event) – $event->getSubject() • sfWebDebugオブジェクトを取得 – このメソッド名は任意 • 変更する場合はdispatcher->connectの引数も変更 15
  16. 16. sfWebDebug • setPanel($name, sfWebDebugPanel $panel) – パネルを追加/変更 – $webDebug->setPanel(‘assets’, new sfWebDebugPanelAssets($webDebug)) • removePanel($name) – パネルを削除 – $webDebug->removePanel(‘assets’) 16
  17. 17. 拡張実践 17
  18. 18. ご清聴ありがとうございました End

×