unserialize
(PHP 4, PHP 5)
unserialize — Creează o variabilă PHP dintr-o reprezentare liniară
Descriere
unserialize() primeşte ca parametru o singură variabilă liniarizată (vezi serialize()) şi o converteşte "înapoi" într-o variabilă PHP. Este returnată valoarea convertită, care poate să aibă tipurile integer, float, string, array sau object.
Notă: Este posibilă setarea unei funcţii callback ce va fi apelată dacă o clasă nedefinită trebuie instanţiată în timpul conversiei din forma liniară (pentru a preveni preluarea incompletă a unui object). Se poate folosi php.ini, ini_set() sau un fisier .htaccess pentru a defini 'unserialize_callback_func'. De câte ori o clasă trebuie instanţiată, se va apela această funcţie. Pentru a dezactiva această facilitate, trebuie doar să ştergeţi această setare.
Example#1 Exemplu unserialize_callback_func
<?php
$serialized_object='O:1:"a":1:{s:7:"valoare";s:3:"100";}';
ini_set('unserialize_callback_func','mycallback'); // setează callback_function
function mycallback($classname) {
// includeţi fişierul care conţine definiţia clasei
// se foloseşte $classname pentru a decide ce definiţie de clasă este vizată
}
?>
Notă: În PHP 3, metodele nu sunt păstrate când se foloseşte unserialize pentru un obiect. PHP 4 elimină această limitare şi restaurează stât proprietăţile cât şi metodele. Consultaţi secţiunea Serializarea obiectelor a capitolului Clase şi obiecte pentru mai multe informaţii.
Example#2 Exemplu pentru unserialize()
<?php
// Aici se foloseşte unserialize() pentru a încărca datele unei sesiuni
// în $session_data dintr-un string selectat dintr-o bază de date.
// Acest exemplu este complementar celui pentru funcţia
// serialize.
$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array ($PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) {
// se iniţializează cu tablou vid în cazul in care execute sau fetch nu funcţionează
$session_data = array();
} else {
// acum datele liniarizate sunt în $tmp[0].
$session_data = unserialize ($tmp[0]);
if (!is_array ($session_data)) {
// dacă ceva nu merge cum trebuie, se iniţializează cu tablou vid
$session_data = array();
}
}
?>
Mai consultaţi: serialize().