home>>PHP FW Kohanaを使う>>Kohanaの基本動作覚書

Kohanaの基本動作覚書

HTTPレスポンスヘッダについて

Another HTML Lintgoogle で頁をチェックするとxhtml_header_checked.png



となる。

XHTML1.1勧告に忠実にメディアタイプをapplication/xhtml+xmlと答えるとM$のIEが誤動作してしまう、というのは旧くて新しい問題[1]なので、ブラウザ別チェックルーチンを付加してIEにはtext/htmlを返すとか、そんなことをやる気は毛頭ない(面倒なことはしない=家訓)。

ただ、このヘッダ返信に関してKohanaのViewクラスがやっていることだけは確かめてみた。

クラスはView($name,$data,$type)という引数を持っている。この$type変数は、実際はファイル拡張子にほかならない。

$typeが指定されなければ、viewsディレクトリのphpファイルがよみこまれて処理後のものをそのまま echoするだけである。つまりはphpのdefault_mimetype(普通text/html)が送出されるのだろう。

一方、$type指定した場合は、その拡張子を

Viewクラスset_filenameメソッド

$this->kohana_filetype = Kohana::config('mimes.'.$type);

で判定して、

Viewクラスrenderメソッド

header('Content-Type: '.$this->kohana_filetype[0]);

するようである。

あれ?ぼくがmimeタイプの判定についてでKohanaはエライとか、褒めてたのに、最後のところで別のmime判定方法でヘッダ出すのかい、Kohanaよ。。と、この頁は、これを書きたかっただけであった。

いや、でも、もう一つ。もし上に書いたように、まじめにXHTML勧告にしたがって、IEに配慮しながらレスポンスヘッダを返そうとした場合は、Viewクラスのメソッドを拡張で上書きするか、phpのdefault_mimeを場合分して設定するというかたちを取るしかなさそうである。ホントは標準Viewクラス内に、(たとえば)set_media_typeメソッドのようなものが入っていてくれるのが、有り難い訳だ。














annex

補足情報はありません













note
[1] 回避するにはどうするかは、 Media type と HTML lint について に詳しい。