ZFDebug(旧略称ZF Debug Bar)を拡張してみる

symfonyにはsfWebDebugToolbarというのがあるらしいです。
どこかで見たことあるなあと思ったら、ZFDebugbarにそっくりじゃないですか!*1


symfony1.2のdebugツールバーは拡張が容易になったそうですね。

sfWebDebugToolbarを 拡張してみる
http://d.hatena.ne.jp/Fivestar/20090517/1242552666

奇遇ですね!ZFDebugも拡張が容易になってます!


最新(r72)のをさっきsvn exportして試してみました。ZFDebugの配布先はgooglecodeに移行されてます。
http://code.google.com/p/zfdebug/


拡張する際はdebugバー用のプラグインインターフェイスを実装します。

<?php
require_once 'ZFDebug/Controller/Plugin/Debug/Plugin/Interface.php';
require_once 'Diggin/Version.php';

class Diggin_Controller_Plugin_ZFDebugbar_Plugin_DigginVersion
        implements ZFDebug_Controller_Plugin_Debug_Plugin_Interface
{
    protected $_identifier = 'diggin_version';
    public function getIdentifier()
    {
        return $this->_identifier;
    }

    public function getTab()
    {
        return Diggin_Version::VERSION;
    }

    public function getPanel()
    {
        //return '';  // 空でもOK
        //
        $msg = "Diggin - Simplicity PHP library";
        $msg .= "<br />since 2006";
        $msg .= "<br /> checks extensions...<br />";
        $msg .= extension_loaded('tidy') ? 'tidy is available' : 'tidy is not loaded!';

        return $msg;
    }
}

bootstrapなどでこんな感じで呼ぶ。

<?php
    protected function _initPlugin()
    {

        if ($this->getEnvironment() === 'development') {
            $options =
                array('jquery_path' => $this->frontController->getBaseUrl().'/js/jquery.min.js',
                     );

            $debugbar = new ZFDebug_Controller_Plugin_Debug($options);
            /** Diggin_Controller_Plugin_ZFDebugbar_Plugin_DigginVersion */
            $debugbar->registerPlugin(new Diggin_Controller_Plugin_ZFDebugbar_Plugin_DigginVersion());
            $this->frontController->registerPlugin($debugbar);
        }

    }

すると以下のとおりデバックバーに追加されます。

*1:苦情は受け付けますが対処しません。。