unserialize
(PHP 4, PHP 5)
unserialize — PHP értéket állÃt elÅ‘ egy kódolt karaktersorozatból
LeÃrás
Az unserialize() egy szerializált értéket vár, (lásd a serialize() függvényt) és visszaalakÃtja PHP értékké azt. Az átalakÃtott értéket adja vissza, ami lehet integer, float, string, array vagy object tÃpusú.
Note: Definiálhatsz egy callback függvényt, amit a PHP akkor hÃv meg, ha egy nemlétezÅ‘ osztályból kell példányt létrehoznia a deszerializáció során. Erre akkor lehet szükség, ha nem szeretnél egy tökéletlen "__PHP_Incomplete_Class" objektumot kapni. Használd a php.ini, ini_set() vagy .htaccess segÃtségével beállÃtható 'unserialize_callback_func' értéket a függvény beállÃtására. Minden alkalommal, amikor egy nem definiált osztályból kell példányt létrehozni, ezt a függvényt fogja a PHP meghÃvni. Ha ki szeretnéd kapcsolni ezt a szolgáltatást, állÃtsd üresre ezt a beállÃtást.
Example#1 unserialize_callback_func példa
$szerializalt_obj='O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set('unserialize_callback_func','mycallback'); // saját callback függvény
function mycallback($osztaly_neve) {
// Itt be tudod tölteni azt a külső állományt, ami az
// osztály definÃcióját tartalmazza. Az osztály nevét
// kapod paraméterül, az alapján dönthetsz.
}
Note: A PHP 3-ban az objektum tulajdonságok szerializálódnak, de a metódusok elvesznek. A PHP 4-esben ilyen probléma nem lép fel. Lásd az objektumok szerializációja részt a Osztályok, objektumok cÃmű fejezetben.
Example#2 unserialize() példa
// Itt az unserialize() függvényt használjuk, miután az adatbázisból
// lekérdeztük a munkamenet adatot a $munkamenet_adat változóba.
// Ez a példa kiegészÃti a serialize() példáját.
$conn = odbc_connect ("webdb", "php", "csirke");
$stmt = odbc_prepare ($conn, "SELECT adat FROM munkamenetek WHERE id = ?");
$sqladat = array ($PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqladat) || !odbc_fetch_into ($stmt, &$tmp)) {
// Ha az execute() vagy a fetch() hibás, üres tömböt veszünk
$munkamenet_adat = array();
} else {
// Most már a deszerializált adatokat a $tmp[0]-ban találjuk
$munkamenet_adat = unserialize($tmp[0]);
if (!is_array($munkamenet_adat)) {
// Valami rosszul ment, üres tömböt veszünk
$munkamenet_adat = array();
}
}
Lásd még serialize().