Object Serialization

serialize() returns a string containing a byte-stream representation of any value that can be stored in PHP. unserialize() can use this string to recreate the original variable values. Using serialize to save an object will save all variables in an object. The functions in an object will not be saved, only the name of the class.

In order to be able to unserialize() an object, the class of that object needs to be defined. That is, if you have an object $a of class A on page1.php and serialize this, you'll get a string that refers to class A and contains all values of variabled contained in $a. If you want to be able to unserialize this on page2.php, recreating $a of class A, the definition of class A must be present in page2.php. This can be done for example by storing the class definition of class A in an include file and including this file in both page1.php and page2.php.

<?php

// classa.inc:

class A {

var $one = 1;

function show_one() {

echo $this->one;}}

// page1.php:

include("classa.inc");

$a = new A;

$s = serialize($a);

// store $s somewhere where page2.php can find it.

$fp = fopen("store", "w");

fwrite($fp, $s);

fclose($fp);

// page2.php:

// this is needed for the unserialize to work properly.

include("classa.inc");

$s = implode("", @file("store"));

$a = unserialize($s);

// now use the function show_one() of the $a object.

$a->show_one();

?>


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: