unserialize

(PHP 3>= 3.0.5, 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.

Exemplu 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.

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