WHAT'S NEW?
Loading...

Yii 1.1 | ブートストラップとデバッグ

今回はBootstrapとデバッグに関して書こうと思う。

チュートリアルではMVCの概念とか、エントリスクリプト(ポイント)とかデバッグに関して書いてあるんだけど、今回は少し独自解釈した内容でお届けする予定。

まぁそれほど大してすごい内容ってわけじゃないけどね。

ところでブートストラップってのはもう知ってると思うけど、知らない人のために説明しておくよ。

簡単に言うと、一つのポイントにリクエストするだけで、そこから順にライブラリなどをたどって、最終的に元の場所にレスポンスとして戻ってくるという流れだ。直訳すると、自力で進む、的な内容になる。

エントリポイントとブートストラップ

『は?』って思った人もいると思うので具体的に説明すると、例えば今まではindex.phpがいろいろなライブラリを読み込んで、すべてindex.phpが主体となってリクエストをさばいてたとすると、ブートストラップ型は、index.phpが読み込まれたら次にlib/request.phjpが読み込まれ、次にlib/params.phpが読み込まれ、最終的にレンダリングに至るという、いわばリレーのような流れで処理するという感じだね。index.phpが主体ってわけじゃない。次から次にタスクを手渡しして次のファイルに進む。

で、ブートストラップ型ってのはいわば主流というか、意識しないでも最近のフレームワークはそうなってるので、あんまり気にしないでいいと思う。結構どうでもいい。

もちろんYiiにもブートストラップ的なファイルがあり、そしてポイントとなるエントリスクリプトもある。
Yiiはまずindex.phpがアクセスされ、その中ではデバッグモードの設定、次にブートストラップであるyii.phpが読み込まれ、次にコンフィグファイル(main.php)が読み込まれてディスパッチされる、という、至ってシンプルな作りになってる。

エントリスクリプトを見てみよう。
[/testdrive/index.php]
// change the following paths if necessary
$yii=dirname(__FILE__).'/../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';

// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

require_once($yii);
Yii::createWebApplication($config)->run();
ここではデバッグモードとトレースレベルを設定してる。
YII_DEBUGがtrueになってるのを確認しておこう。なってなかったらそうしておこう。

デバッグしようぜ

さて、デバッグ。
プログラムの8割はデバッグといってもいいだろう。たいてい正しく動かないので、なんで動かないのか調査し、修正する時間が8割というわけだ。

その時に役に立つツールがあって、例えるとCakePHPのDebugKitに含まれてるDebugToolbarみたいなものだ。


なんとそのような便利なものがYiiにもある。
その名も『yii-debug-toolbar』だ。

http://www.yiiframework.com/extension/yii-debug-toolbar/

これからこのブログでYiiの習得をするべく、長くて細い道を進むわけなので、こういった便利なものは最初に入れておこうと思う。

このリンク先のページがこの記事を書いている時から変更されてないのであれば、画面右側にダウンロードのリンクがあると思うので、最新版をデスクトップなどに落としておこう。

もちろん解凍しておくことも忘れずに。

解凍したらフォルダに入っている『yii-debug-toolbar』フォルダを『/testdrive/protected/extensions/』に置くだけだ。こりゃ楽だね。フォルダ階層には気をつけよう。

そして今度はこのツールバーを画面に表示させるべく、コンフィグファイルをいじろう。

[/testdrive/protected/config/main.php]
'log'=>array(
        'class'=>'CLogRouter',
        'routes'=>array(
            array(
                'class'=>'ext.yii-debug-toolbar.YiiDebugToolbarRoute',
                'ipFilters'=>array('*'),
            ),
        ),
    ),
上記のように、logの設定を編集して保存する。

そしておもむろにブラウザで見てみるとこうなる。



オソロシヤ!!!


さて、今回はここまで。
次回はコンポーネントのネタなんかできればいいかなって思う。