<?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;
}
} ?>
|