Forum und email

unserialize

(PHP 4, PHP 5)

unserialize — Creează o variabilă PHP dintr-o reprezentare liniară

Descriere

mixed unserialize ( string $str )

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