freelance programmers outsource from india freelance programmers  chennai india programmers freelance programmers  freelance php coder freelance outsource scripts freelance programmers programming complicated perl patterns freelance programmers php module installation freelance programmers
freelance programmers  outsource from india freelance programmers  perl installation and configuration freelance programmers  php installation linux system freelance programmers administration US$15,US$19,US$11,US$10 cheap programmer
india outsource outsource india chennai india programmers php perl mysql freelance freelance programmer
SHOWCASE of php and perl scripts CONTACT US for php custom perl scripts
HOME
 

Serializing objects - objects in sessions

Note: In PHP 3, objects will lose their class association throughout the process of serialization and unserialization. The resulting variable is of type object, but has no class and no methods, thus it is pretty useless (it has become just like an array with a funny syntax).

Caution

The following information is valid for PHP 4 only.

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();
?>

If you are using sessions and use session_register() to register objects, these objects are serialized automatically at the end of each PHP page, and are unserialized automatically on each of the following pages. This basically means that these objects can show up on any of your pages once they become part of your session.

It is strongly recommended that you include the class definitions of all such registered objects on all of your pages, even if you do not actually use these classes on all of your pages. If you don't and an object is being unserialized without its class definition being present, it will lose its class association and become an object of class stdClass without any functions available at all, that is, it will become quite useless.

So if in the example above $a became part of a session by running session_register("a"), you should include the file classa.inc on all of your pages, not only page1.php and page2.php.

Copyright © 1997 - 2007 by the PHP Documentation Group. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later. A copy of the Open Publication License is distributed with this manual, the latest version is presently available at http://www.opencontent.org/openpub/. Please see full copyright text at http://www.php.net/manual/en/copyright.php Original version of the above documentation is available at http://www.php.net/manual/en/



  1. Please click on Meta Search medical websites using php curl mysql
  2. Please Also click on our Web developers Showcase



Web design and Programming Copyright @ Chrisranjana.com 1999-2007. Website designed and Webdevelopers and Website programmed by Web developers and Software programmers. We do excellent software development in asp and .net c# csharp also