<?php
/**
* including of the interface
*/
require_once(dirname(__FILE__)."/SessionObject.php");
class ExampleClass implements SessionObject {
/**
* contains time of first initialization
*
* @var string
*/
private static $date;
/**
* array which contains random numbers
*
* @var array
*/
private static $someArray = array();
/**
* state of data initialization of this class
*
* @var boolean
*/
private static $dataInitialized = false;
function __construct()
{
if (!self::$dataInitialized) {
$this->setDate();
$this->setUpArray();
}
}
/**
* prints info about class vars
*
*/
function printMyInfo()
{
$this->printLine(__CLASS__);
$this->printLine();
$this->printLine("Time of my creation");
$this->printLine("<strong>".self::$date."</strong>");
$this->printLine();
$this->printLine("My numbers");
print "<pre>";
foreach (self::$someArray as $key => $value) {
$this->printLine("<strong>{$key}</strong>:\t {$value}");
}
print "</pre>";
}
//////////////////////////////////////
//// PRIVATE METHODS ////
//////////////////////////////////////
/**
* sets internal variable to actual date
*/
private function setDate()
{
self::$date = date("H:i:s");
}
/**
* sets up internal array to contain some random numbers
*
*/
private function setUpArray(){
self::$someArray = array();
for ($i = 0; $i < 10; $i++ ) {
self::$someArray[] = rand();
}
}
/**
* prints a debug line
* @param string $str
*/
private function printLine($str="")
{
print "{$str}<br />";
}
//////////////////////////////////////
//// STATIC METHODS ////
//////////////////////////////////////
/**
* returns the state of object we want to keep over each consecutive page loads
*/
static function getObjectState(){
return serialize(array(self::$date, self::$someArray));
}
/**
* sets the object to the state previously obtained by calling object method getObjectState()
*
* @param mixed $objectState
*/
static function setObjectState($objectState){
$dataSavedToSession = unserialize($objectState);
self::$date = $dataSavedToSession[0];
self::$someArray = $dataSavedToSession[1];
self::$dataInitialized = true;
}
}
?>
|