このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

RC2 の JavascriptHelper::object() がデータ型を見るようになりました

JavascriptHelper::object() といえば、配列を JSON 形式に変換してくれる便利なメソッドですが、どうやら RC2 から仕様が変わったようで、要素のデータ型を反映するようになりました。

つまり、以前は数値に見えるものは数値として出力していたところを、 is_string() などを参考にして、文字列型と判断された場合はダブルクォーテーションを付加して出力します。

たとえば以下のようなコードは正しく動作しなくなります。

// $complexData["visible"] にデータベースから取得した boolean 値が入っている時…
var complex_data = eval(<?php $javascript->object($complexData) ?>);

if (complex_data["visible"]) {
  // ↑たぶん 0 か 1 によって分岐したいのだろうが
  // 文字列は "0" でも真になるのでこの分岐の意味がなくなる
}

対策は JSON 化する前にデータ型を boolean に変換するか、 data == “1″ のように文字列として比較するかのどちらかが簡単だと思います。

もしかしたら MySQL 以外なら問題なく動くかも。

back to top