JSON pada PHP di bawah versi 5.2 ?

Web developer yang menggunakan PHP, tentu sering menggunakan JSON dalam aplikasi. JSON (JavaScript Object Notation), adalah format transfer data yang ringan dan lebih simpel dibanding XML.

Saya sendiri sering menggunakan JSON pada PHP untuk pertukaran data dari web server ke client, khususnya pada AJAX call, dengan menggunakan fungsi json_encode() dan json_decode(). JSON pada PHP didukung secara bawaan sejak PHP 5.2.

Mimpi buruk dimulai saat saya mengembangkan aplikasi untuk salah satu klien menggunakan CodeIgniter versi 2.2.0, dan PHP 5.5 terinstal di laptop. Setelah aplikasi sudah siap untuk live, saya upload ke web hosting klien. Dengan penuh percaya diri, saya test. Hasilnya? Aplikasi bahkan gagal pada saat login.

Karena mekanisme login menggunakan teknik AJAX, saya coba lihat output menggunakan Firebug.
Pesan error nya : PHP Fatal error: Call to undefined function json_encode().

Fungsi json_encode() tidak terdefinisi di PHP. Saya cek versi PHP di hosting, ternyata MASIH menggunakan PHP 5.1.6, sementara dukungan pada JSON baru ada pada PHP 5.2. Penggunaan JSON pada coding bertebaran di mana-mana. There is not enough time to change all of them.

Saya memutar otak untuk mencari solusi yang cepat. Sayangnya setelah diputar bolak-balik, solusi tetap tidak muncul. So, seperti biasa, last resort adalah StackOverflow. And, SO is like one-stop-info for lazy programmer like me. Huehuehue..

Di SO ternyata sudah ada yang memiliki kasus dan pertanyaan yang sama. Salah satu jawabannya memberikan link ini.Sayangnya solusi tersebut ditujukan untuk PHP pure tanpa framework. Jadi harus dimodifikasi sedikit agar bisa digunakan di CodeIgniter.

Langkah-langkahnya:

  • Download file ini
  • Ekstrak menggunakan 7zip, WinZIP, WinRAR atau ekstraktor lain kesukaaan anda. Saya menggunakan 7Zip.
  • Copy file Services_JSON.php dari hasil ekstrak, ke dalam folder libraries di aplikasi anda.
  • Copy file json_helper.php ke dalam folder helpers di aplikasi anda

Untuk menggunakannya di coding, load lebih dahulu di Controller agar bisa digunakan, dengan cara:

  • Load library
  • Load helper

Atau tambahkan “Services_JSON” di array autoload libraries dan “json” di autoload helper, agar kita tidak usah melakukan load lagi di controller.

And.. voila… semua fungsi json_encode() dan json_decode() berjalan sesuai keinginan.

I can sleep in peace now. 🙂

One thought to “JSON pada PHP di bawah versi 5.2 ?”

Leave a Reply