Php'de serialize yöntemleri ve kullanımı

serialize yöntemlerinin kullanım amacı, varolan bir dizi'yi string değere çevirip saklamak, gerektiğinde tekrar dizi olarak geri almaktır.

1. serialize ve unserialize


<?php
$a = array('a' => 'Kahve' ,'b' => 'Çikolata' , 'c' => 'Film');
//diziyi serialize ediyoruz
$s = serialize($a);
echo $s;
//a:3:{s:1:"a";s:5:"Kahve";s:1:"b";s:8:"Çikolata";s:1:"c";s:4:"Film";}
echo '<br /><br />';
//tekrar dizi haline getiriyoruz
$o = unserialize($s);
print_r($o);
?>

bu şekilde elinizde ki diziyi string haline çevirip saklayabilirsiniz. yalnız string içerisinde
tırnak,çift tırnak gibi zararlı işaretler var ise hata ile karışlaşmanız olasıdır. bu sebeple stringi base64 ile şifrelemenizde fayda var.


<?
$dizi = array();
//serialize
$serialize = base64_encode(serialize($dizi));
//unserialize
$dizi = unserialize(base64_decode($serialize));
?>

2. json_encode ve json_decode

JSON yöntemi serialize yöntemine göre daha iyidir. bunun sebepleri :

1. JSON daha hızlıdır.
2. JSON encode halinde bile okunabilir formattadır.
3. JSON nispeten daha az yer kaplar.
4. JSON diğer diller tarafından da okunabilir.


<?
$a = array('a' => 'Kahve' ,'b' => 'Çikolata' , 'c' => 'Film');
//diziyi serialize ediyoruz
$s = json_encode($a);
echo $s;
//{"a":"Kahve","b":"Çikolata","c":"Film"}
echo '<br /><br />';
//tekrar dizi haline getiriyoruz
$o = json_decode($s);
?>

göründüğü gibi JSON daha temiz ve okunabilir bir yöntemdir.

3. var_export ve eval


<?
$a = array('a' => 'Kahve' ,'b' => 'Çikolata' , 'c' => 'Film');
//diziyi serialize ediyoruz
$s = var_export($a , true);
echo $s;
//strin is >> array ( 'a' => 'Kahve', 'b' => 'Çikolata', 'c' => 'Film', )
echo '<br /><br />';
//tekrar dizi haline getiriyoruz
eval('$my_var=' . $s . ';');
print_r($my_var);
?>

4. wddx_serialize_value ve wddx_deserialize


<?
$a = array('a' => 'Kahve' ,'b' => 'Çikolata' , 'c' => 'Film');
//diziyi serialize ediyoruz
$s = wddx_serialize_value($a);
echo $s;
//<wddxPacket version='1.0'><header/><data><struct><var name='a'><string>Kahve</string></var><var name='b'><string>Çikolata</string></var><var name='c'><string>Film</string></var></struct></data></wddxPacket>
echo '<br /><br />';
//tekrar dizi haline getiriyoruz
$o = wddx_deserialize($s);
print_r($o);
?>

Check Also

Linux DNS (Bind) Servisi Sorunu Çözme

Linux sunucunuzda bind (dns) servisinde sorunlar yaşıyorsanız bu servisi tekrar başlatmanız (resetlemeniz) sorununuzu büyük ihtimal …

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir