開発に便利そうなDebugKitをインストールしてみました(baserCMS 2.1.x+PHP 5.3.xで)
WordPressには、プラグインやテーマの開発に便利な『DebugBar』というプラグイン(と、その拡張プラグイン)が公式ディレクトリで配布されています。これを使うと、ページ生成時に実行されたクエリーやグローバル変数の中身をフロントエンド(ブラウザ上)で確認でき、何かと便利です。
で、baserCMSでも同じような機能を持たせられないかなあ……と探したら、CakePHPに『DebugKit』というプラグインがあるのがわかりました。さらに調べたところ、baserCMSの開発ブログに「BaserCMS で DebugKit プラグインを利用する」という記事を発見。
おお、これはやってみるべし、と組み込んでみました。
例示のコードだと baserCMS 2.1.x+PHP 5.3.x ではエラーが
ブログの記事によると、作業の手順は下記のようになります。
- GitHubより『DebugKit』を入手(CakePHP 1.2対応版を入手すること)
- /app/plugins/ に debug_kit というディレクトリを作り 1. のファイル一式を入れる(これにより『DebugKit』をbaserCMSのプラグインとして機能させる)
- /app/plugins/debug_kit/controllers/components 内に debug_kit_hook.php を作る
- 管理画面にて『DebugKit』プラグインを有効化する
- 管理画面にて、サイトの制作・開発モードを「デバッグモード1」にする
ということで、記事の教えに沿ってやってみたところ
エラーは出るわ文字化けするわであわわわわ……記事にあったスクリーンショットから察するに、 どうもbaserCMS 1.x系の時期に書かれたTipsのようです。そこで、2.x系+PHP 5.3.xで動くよう、いくつか変更を加えてみました。
1文字削除+拡張子変更で不具合解消
まずやったことは、ページ上部に出ている
Warning (2): Parameter 1 to DebugKitHookComponent::initialize() expected to be a reference, value given [{path_to}\baser\controllers\components\bc_plugin_hook.php, line 120]
というエラーの解消です。定石どおり(?)エラーメッセージをググってみたところ、どうやら debug_kit_hook.php 内での引数の渡し方に原因があるとのこと。PHP 5.3になってから、エラーメッセージにある bc_plugin_hook.php 内の call_user_func_array() の挙動が変わったらしく、/app/plugins/debug_kit/controllers/components/debug_kit_hook.php を書き換える必要がありました。
- function initialize(&$controller){ + function initialize($controller){
もう一つはこの文字化け。
これは、ブラウザ表示のエンコードをUTF-8にしてみて判明しました。
たしかに /app/plugins/debug_kit/views 内を見てみますと *.ctp のテンプレートファイルがありました。
そこで *.ctp のファイルを *.php にしてみたところ
エラー解消!
『DebugKit』がうまく機能するようになりました。
修正済みのファイルをGitHubに公開しました
baserCMSも、CakePHP 2.4ベースの次期バージョンが開発進行中で、ここで書いた方法が使い物にならなくなるのも時間の問題ですが、それでもどなたかのお役に立てれば……と、修正済みのファイルをGitHubに公開しました。
git で手元にもってくるなり、ZIPファイルをダウンロードして展開するなりしてお使いいただければうれしいです。なお、ブランチ名は 1.2-branch-basercms となっています。