Unable to serialize an object based on a singleton in PHP

nokiss

New Member
I have an object, based on the Singleton design, that I use for user authentication. Because the object is a per-user object, I want the object to be stored automatically in a session variable at the end of execution. However, any time I try to serialize the object, either internally or externally, I get an empty string.The following is the basic class, minus irrelevant functions:\[code\]<?php/*** The user class is intended to handle information about authenticated users. Information contained in this class is to be stored* in SESSION['session_user'] as a serialized object.*/class User { // Reference to the single User instance private static $_instance; // User levels const GUEST = 0; const USER = 1; const ADMINISTRATOR = 3; // Information about the account private $_username; private $_userid; private $_userlevel; // Information about the user, for preventing session hijacking private $_ipaddress; private $_useragent; private function __construct() { // Set the visitor's information // Set the default information } public static function getUser() { // Check if a user object has been created if (!isset(self::$_instance)) { // Check if the object is stored in the user session if (isset($_SESSION['session_user'])) { self::$_instance = unserialize($_SESSION['session_user']); //unset($_SESSION['session_user']); echo 'Unserializing user'; } else { $c = __CLASS__; self::$_instance = new $c; echo 'Creating new user'; } } return self::$_instance;}function __wakeup() { // First, check that the user agent has not changed // Check that the IP has not changed}function __destroy() { $_SESSION['session_user'] = serialize(self::$_instance); echo serialize(self::$_instance); print_r($_SESSION);}public function __set($index, $value) { return NULL;}public function __get($index) { // Determine which value to return}public function authenticate($inUsername, $inPassword) { // Authenticate the user}}?>\[/code\]Any time I call serialize on the object, either internally in the __destroy method using serialize($this) or serialize(self::$_instance), or externally using serialize($user), I get an empty string. However, I know the object exists since I can get data out of it about an authenticated user.
 
Back
Top