unserialize

(PHP 3>= 3.0.5, PHP 4 )

unserialize --  PHP értéket állít elő egy kódolt karaktersorozatból

Leírás

mixed unserialize ( string str)

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().