PHPのバージョンが低くて「json_encode()」が使えないでござる

json_encodeはPHP5.2以上から利用できるため、使えない場合はPHPのバージョンUPが必要となります。ただ、簡単にPHPのバージョンアップなど実行できません。それで新たな不具合が出た場合も大変ですし、出来たら、PHPのバージョンを上げずに利用したいはずです。もし、json_encode()を使える前提で作られたプログラムを移植したい場合はどうしたらよいのでしょうか。移植できないのでしょうか?もしくはソースを自力で書き直す…!?
PHP5.2以上であれば「json_encode()」という関数が利用できます。しかし5.2以下であれば、「json_encode()」という関数は存在しないため、

Fatal error: Call to undefined function json_encode() in ….

となります。


自前で書換えないと…って思ってる方、そうではなく、5.2以下の場合は、同じ名前でJSON処理をする関数を作れば良いのですね。この方の記事が参考になりました。
suz-lab – blog: (suz-php-jquery) 続・json_encodeが使えない場合対応
以下一部転載。

<?php
public static function compatible() {
  if(!function_exists("json_encode")) {
    function json_encode($object) {
      require_once("Services/JSON.php");
      $json = new Services_JSON();
      return $json->encode($object);
    }
  }
}

上記のコードでは、「json_encode」という関数が存在するかどうかを問い合せています。もし存在するのであれば、そのまま利用します(PHP5.2以上の場合)。しかし、存在しなかった場合、「function json_encode($object) 」を作成し、「json_encode」という関数を作り上げます。処理の中身としては、別のJSONライブラリにデータを投げて、結果を表示しているだけです。
「Services/JSON.php」は以下のURLから取得できます。
JSON.php – suz-lab – suz-lab – Google Project Hosting
お客様の環境でPHPのバージョンアップとか出来ればしたくなかったので、超助かりました。


投稿日

カテゴリー:

,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です