NEKOGET Report

英語 japanese

-

[NEKOGET版] さよなら! var_dump! ようこそ CodeIgniter Profiler!

Codeigniter  Profiler
CodeIgniterには上画像のような感じでプロファイラを表示する機能が用意されています。これがとっても便利。
しかし、ずっと表示させておくのはうっとうしいし、うっかり本番で表示されちゃったら大変です!!!

ということで、
http://d.hatena.ne.jp/localdisk/20110521/1305964812
「さよなら! var_dump! ようこそ CodeIgniter Profiler!」を参考に私も実装してみました。

(1) javascript部分の表示用にviewファイルを作成
  • /application/views/profiler.php
  • 参考サイトとの変更点
  • #profilerの背景画像の廃止
  • #profilerのcss設定をjsで指定
  • ボタン画像の作成(ロールオーバー用と通常用の2個)
  • ボタンのロールオーバー
  • プロファイラを開いているときにボタン位置まで移動するのは面倒なので#codeigniter_profilerのどこかをクリックしたら閉じるように改変。
<script type="text/javascript">
//<!--
$(function(){
  if ($('#codeigniter_profiler').length > 0) {
    var prof = $('<div>', {
      id: 'profiler',
      html: $('<img>', {
      id : 'profiler_button',
      height: 35,
      width: 178,
      alt: 'Toggle Profiler',
      title: 'Toggle Profiler',
      src: '<?php echo base_url(); ?>common/images/profiler/nav_toggle_darker.png'
     })
    });

    $('body').prepend(prof);
    $('body').prepend($('#codeigniter_profiler'));
    $('#profiler').css('text-align', 'right');
    $('#profiler').css('border-top', '10px #000 solid');
    $('#codeigniter_profiler').css('display', 'none');
    $('#codeigniter_profiler').css('background', '#FFF');
    $('#codeigniter_profiler').click(function () {
     $('#codeigniter_profiler').slideToggle();
    });
    $('#profiler_button').hover(function(){
     this.orgImage = $(this).attr('src');
     this.rolloverImage = this.orgImage.replace(/(\.gif|\.jpg|\.png)/, "_on$1");
     $(this).attr('src',this.rolloverImage);
    },function(){
     $(this).attr('src',this.orgImage);
    });
  }
});
// -->
</script>
(2) 本番環境なのか開発環境なのかを判定する為に、application/config/config.phpに本番環境のURLを設定
$config['genuine_url'] と$config['base_url']が合致する場合は、本番環境。←ココ重要
//本番用URL
$config['genuine_url'] = 'http://press.nekoget.com/';
//実際に設置しているURL
$config['base_url'] = 'http://localhost/nekoget_report/trunk/';


(3) <head>部分を出力しているviewファイルに追記。
echoを書かずに$this->load->view("profiler");だけでも良いかも...
<?php
if($this->config->item("genuine_url") !=  $this->config->item("base_url"))
{
 echo $this->load->view("profiler" , '' , TRUE);
}
?>


(4) Controllerでの記述
MY_Controllerに書いちゃうかどうかは、後から考えるとして、とりあえず。
if($this->config->item("genuine_url") != $this->config->item("base_url"))
{
 $this->output->enable_profiler();
}



【実際に組み込んでみた感想】
・ページの頭に、表示ボタンがあるのはステキ。

ページトップへのリンクは作る事が多いので、プロファイラは上にあったほうが便利。普通ページ最後へのページ内リンクは作らないものね。

うっかり事故:本番でプロファイラが表示されちゃうを防げる安心感。


実装後の開発環境 : 下画像
profiler
【今後の課題 実装予定】
・CI_Profiler Classを拡張する。

本番環境、開発環境判定のif文が長いし、毎回書くのもめんどくさい。
$this->output->enable_profiler();を書くだけでプロファイラが表示。
$config['genuine_url']が未設定 OR 本番環境の場合は、プロファイラを表示しない挙動に改変。



【大感謝】
@localdiskさんのおかげで、快適になりました♪
大感謝☆

Creation data : 2011-05-23 04:55

Last update : 2011-05-23 04:55

-

-