Problem : Degisken
icerigini bir yerde saklamak istiyorsunuz.
Cozum : serialize () ve unserialize () hazir fonksiyonlarini
kullanarak kendi fonksiyonlarinizi yazin.
loadsave.inc
<?php
//
// File: loadsave.inc
// Library functions for saving and loading data to and from
a file
//
//
//
// int save (string varname) :
// Save the value of varname to file
//
function save($var) {
global $$var;
$data = serialize($$var); // String Rep. of $$var
$filename = "php_serialized_vars/" . $$var . ".txt";
$fp = @fopen($filename, "w") or die ("Cannot open $filename
for write access");
fwrite($fp, $data);
@fclose($fp) or die ("Cannot close $filename");
return(true);
}
//
// int load (string varname)
// Load the value of varname from a file
//
function load($var)
{
global $$var; // Put the saved variable in the global
// namespace
$filename = "php_serialized_vars/" . $$var . ".txt";
$fp = @fopen($filename, "r") or die ("Cannot open $filename
for read access");
$data = fread($fp, filesize($filename));
@fclose($fp) or die("Cannot close $filename");
$$var = unserialize($data);
return(true);
}
?>
Simdi de bu fonksiyonlari programlariniz icinden nasil kullanacaginiza
bakalim :
save.php
<?php
$foo = "merhaba";
save ('foo');
?>
<a href="load.php">Burayi tiklayiniz</a>
load.php
<?php
load('foo');
print $foo;
?>
Tartisma : Verinin dizi,nesne vb. ne olduguna bakilmadan serialize
() fonksiyonu ile string seklinde bir sikistirma yapilir.unserialize
fonksiyonu bu string okuyarak tekrar eski haline getirir.
Birden fazla degiskenin ayni anda serialize edilmesi islemi
Bu islem ile ayni zamanda diger programlama dilleri veya program
surecleri ile verilerinizi paylasabilirsiniz.
Cozum : WDDX fonksiyonlari ile sikistirma yapiniz.( http://www.wddx.org/ )
<?php
$ice_cream = array ("Mint Chocolate Chip","Vanilla","Chocalate","Coffee");
$packet_id = wddx_packet_start("PHP");
wddx_add_vars($packet_id, "ice_cream");
$packet = wddx_packet_end($packet_id);
?>
Web Distributed Data sXchange formati, " Uygulamalar arasinda
kompleks veri alis-verisi icin gelistirilmis bir mekanizmadir."Bu
fonksyionlar ile sikistirma yapildiginda veri "paketleri"
hazirlanir.Bu pakelter degiskeninizin sakladigi veri ile ilgili
bilgi icerir.Bu pakelter saklanir ve istendiginde programiniz
tarafindan tekrar okunur.
WDDX Deserialization
WDDX-ile sikistirilmis paket var ve cozmek, yani degiskenin
degerini okumak istiyorsunuz.
wddx_deserialize fonksiyonu ile WDDX string'ini PHP degiskenine
donusturun :
<?php
$favorite_tv_shows = array("M*A*S*H", "Seinfeld", "The Simpsons");
$text = wddx_serialize_vars($favorite_tv_shows);
$favorite_tv_shows_again = wddx_deserialize ($text);
foeeach ($favorite_tv_shows_again as $show) {
print "$shown<br>n";
}
?>
wddx_deserialize fonksiyonu argument olarak WDDX paketini
alir ve onu PHP degiskenleinden olusan bir diziye cevirir.Bu
fonksiyonun en guzel yani bir baska dilden gelen WDDX paketini
programiniz icinde PHP degiskenlerine donusturmesidir.
Kaynak : 0-672-31924-1
Serkan Hadi Ceylani
serkan@turk-php.com
|