Serialisasi Variabel di PHP

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->duniaPHP_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($fp4096);
    
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

Tidak akan dipublikasikan
  • Alamat web dan email dirubah menjadi hyperlink secara otomatis
  • Tag HTML yang diizinkan: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Baris baru maupun paragraph dipisahkan secara otomatis

Informasi lebih lanjut tentang format pesan