PHP5.1.x系でseezooを動かしたい場合は?

おそらくサーバー要件できついかもしれないのがjson_encode関数のサポートだと思います。

SimpleXML関数系はPHP5組み込みですが、json_encode関数のサポートはPHP5.2.0以上となっています。

よって、


PHP5.0 < 導入サーバーのPHPバージョン < PHP5.2

の場合、json関連の処理がまったくできない事になってしまいます。

その場合、例外的ではありますが、PEAR::Services_JSONを入れたら何とかなります。

Servieces_JSONのDLとインストール


PEAR::Serveice_JSONからダウンロードできます。

PEARのパッケージマネージャがあれば、コマンドからインストールできます。


# pear install Services_JSON-1.0.2

幸いにしてPEARの依存関係がないので単体で使用できます。

ダウンロードした場合は、解凍してできるJSON.phpをsystem/application/libraries/以下に設置します。

設置方法


この関数はグローバルで使いたいので、CodeIgniterのヘルパーに関数を追加します。
自作ヘルパーを作ってロードしても良いですし、
分からない方はsystem/application/helpers/seezoo_helper.phpに以下のコードを追加すればOKです。


// 念のために関数が存在するかチェック
if ( ! function_exists('json_encode') )
{
 // JSON.phpをincludeしておく
 require_once(APPPATH . 'libraries/JSON.php');

function json_encode($data)
{
// Services_JSONインスタンス生成
$json = new Services_JSON();
// encodeして値を返却
return $json->encode($data);
}
}

perr installコマンドでインストールした場合はinclude_pathはセットされているので、上記requireは


require_once('JSON.php');

でOKとなります。
これでjson_encode関数が擬似的にサポートされます。*1

もしもPHP5.1.xとかでseezooを動かしたい!ということがあればお試しくださいませ。

あ、あとインストーラではPHP5.2以上のチェックを行っているので、そこをスキップしないといけないですね。
後日パッチ配布予定です。


要望が多ければ、次回バージョンアップではService_JSONをデフォルトで組み込んだPHP5.1.x系対応版とする予定です。*2

*1:※Services_JSONと組み込みのjson_encode関数は結果が若干違うようですが、JavaScript側でJSONを扱う際にはハッシュのキーの順は特に関係しないので、問題ないと思います

*2:もしjson_encodeをサポートさせる他のライブラリがあれば教えてください><