Serialisasi (serialization) adalah suatu teknik di dalam bahasa pemrograman yang digunakan untuk merepresentasikan suatu data/variabel ke dalam string. Ini ditujukan agar data tersebut dapat disimpan di suatu file atau dikirimkan melewati koneksi jaringan ke komputer lain.
Pada bahasa pemrograman python untuk melakukan serialisasi terhadap suatu objek bisa menggunakan modul pickle ataupun shelve. Dan pada bahasa pemrograman PHP bisa menggunakan fungsi serialize(), dan untuk mengembalikan hasil serialisasi tersebut ke bentuk semula (deserialisasi) menggunakan fungsi unserialize().
Di PHP, hanya variabel dengan tipe data resource yang tidak bisa diserialisasikan. Pada umumnya variable dengan tipe data resource ini merujuk ke suatu objek di luar PHP seperti membuka file ataupun koneksi ke database. Berikut contoh serialisasi untuk variabel dengan tipe data array.
<?php
$var = array('satu' => 1, 'dua' => 2);
echo serialize($var), PHP_EOL;
?>
Jika dieksekusi maka kode program diatas akan memberikan keluaran berupa string
a:2:{s:4:"satu";i:1;s:3:"dua";i:2;}Untuk mengembalikan bentuk string tersebut menjadi array kembali, maka string tersebut harus di deserialisasi.
<?php
$var = unserialize('a:2:{s:4:"satu";i:1;s:3:"dua";i:2;}');
print_r($var);
?>
Jika dieksekusi maka kode program diatas mengembalikan string hasil serialisasi menjadi variable bertipe array kembali.
Array
(
[satu] => 1
[dua] => 2
)Untuk serialisasi variabel bertipe object, maka class dari object tersebut harus diikut sertakan ke dalam kode program. Jika tidak maka hasil deserialisasi tidak akan mengenali class dari object tersebut dan menganggapnya sebagai __PHP_Incomplete_Class. Untuk lebih jelasnya bisa melihat contoh dibawah ini:
File halo.php
<?php
class Halo
{
var $halo;
var $dunia;
function __construct()
{
$this->setHalo();
$this->setDunia();
}
function halodunia()
{
echo $this->halo, ' ', $this->dunia, PHP_EOL;
}
function setHalo()
{
$this->halo = 'halo';
}
function setDunia()
{
$this->dunia = 'dunia';
}
}
?>
File serialize-object.php
<?php
include 'halo.php';
$class = new Halo();
$serialize = serialize($class);
if ($fp = fopen('object.txt', 'w+')) {
fwrite($fp, $serialize);
fclose($fp);
}
?>
File unserialize-object.php
<?php
include 'halo.php';
if ($fp = fopen('object.txt', 'r')) {
$serialize = fread($fp, 4096);
fclose($fp);
$class = unserialize($serialize);
$class->halodunia();
}
?>
Penjelasan Kode Program
Pada file serialize-object.php kode program membuat instan dari class Halo dan menyimpannya kedalam object. Kemudian object tersebut diserialisasi, dan hasil dari serialisasi tersebut disimpan kedalam file object.txt. Agar object tersebut bisa digunakan kembali di file lain, maka pada file unserialize-object.php kode program mengambil hasil serialisasi tersebut dan menjadikannya object kembali. Setelah menjadi object, maka kita bisa mengakses method halodunia();
Dengan melihat contoh kode program diatas maka akan lebih mudah untuk mengerti bagaimana sebenarnya penggunaan serialisasi. Contoh lain dari penggunaan serialisasi di PHP adalah pada penanganan session. Variabel yang didaftarkan di session akan diserialisasi, dan hasil dari serialisasi tersebut kemudian disimpan di dalam file di server.
Referensi :
- http://en.wikipedia.org/wiki/Serialization
- http://id2.php.net/serialize
- http://id2.php.net/unserialize
- http://id2.php.net/manual/en/ref.session.html
- David Sklar, Adam Trachtenberg "PHP Cookbook, 2nd Edition", Agustus 2006
- Elliot White III, Jonathan Eisenhamer "PHP 5 in Practice", July 11, 2006
Comments
wah sptnya maut ni jurus php nya :D salam
Kirim Komentar