serialize

(PHP 4, PHP 5, PHP 7)

serializeGenerează o reprezentare ce poate fi stocată a unei valori

Descrierea

serialize ( mixed $value ) : string

Generează o reprezentare ce poate fi stocată a unei valori.

Aceasta este utilă pentru păstrarea sau interpretarea valorilor PHP fără a pierde tipul sau structura lor.

Pentru a transforma invers un string serializat într-o valoare PHP, utilizați unserialize().

Parametri

value

Valoarea ce trebuie serializată. serialize() prelucrează toate tipurile, cu excepția resource. Puteți chiar aplica serialize() asupra tablourilor ce conțin referințe la sine însele. Referințele circulare din interiorul tabloului/obiectului pe care îl serializați de asemenea vor fi stocate. Orice altă referință va fi pierdută.

La serializarea obiectelor, PHP va încerca să apeleze funcția-membru __sleep() înainte de serializare. Aceasta se efectuează pentru a-i permite obiectului să efectueze orice curățiri, etc. înainte de a fi serializat. La fel, când obiectul este restabilit cu ajutorul unserialize() funcția-membru __wakeup() este apelată.

Notă:

Membrii privați ai obiectului au denumirea clasei prefixată la denumirea membrului; membrii privați au un '*' prefixat la denumirea membrului. Aceste valori prefixate au câte un octet nul din ambele părți.

Valorile întoarse

Întoarce un string conținând reprezentarea value sub formă de byte-stream care poate fi stocată oriunde.

Atrageți atenția că acesta este un șir de caractere binar, ce poate include octeți null, de aceea trebuie stocat și manipulat ca atare. De exemplu, rezultatele funcției serialize() la general ar trebui stocate într-un câmp BLOB într-o bază de date, și nu într-un câmp CHAR sau TEXT.

Exemple

Example #1 Exemplu serialize()

<?php
// $session_data conține un tablou multi-dimensional cu informație despre
// sesiune pentru utilizatorul curent. Vom utiliza serialize() pentru a
// stoca această informație într-o bază de date după încheierea interpelării.

$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmt$sqldata)) {
        
/* Ceva nu este în regulă.. */
    
}
}
?>

Note

Notă:

Atrageți atenția că multe obiecte PHP încorporate nu pot fi serializate. Însă cele ce permit acest lucru implementează interfața Serializable sau metodele magice __sleep() și __wakeup(). Dacă o clasă internă nu îndeplinește cel puțin una dintre aceste cerințe, ea nu poate fi serializată cu siguranță.

Există unele excepții istorice de la această regulă, când unele obiecte interne pot fi serializate fără a implementa interfața sau a expune metodele. Cel mai elocvent exemplu este ArrayObject în versiunile anterioare PHP 5.2.0.

Avertizare

Când serialize() serializează obiecte, primul backslash din denumirea clasei, în cazul claselor cu spații de nume, este exclus pentru a maximiza compatibilitatea.

A se vedea și