PHP kézikönyv Előző Következő 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ú. Megjegyzés: 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. Példa 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.} Megjegyzés: 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. Példa 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(). Előző Tartalom Következő Fel