erenpasa
asked on
Object Serialize
Hi,
I want to serialize my object recursively.
How can i complete this job?
ps: i use serialize but it does't serialize Area object in $areaList array of course.
I want to serialize my object recursively.
How can i complete this job?
ps: i use serialize but it does't serialize Area object in $areaList array of course.
<?php
class Design{
public $areaList=array();
function __construct(){}
function __destruct(){}
function newArea(){
$area=new Area(null);
$this->areaList[sizeof($this->areaList)]=$area;
return $area;
}
}
class Area{
public $className="";
protected $areaId="";
protected $parentArea=null;
protected $subAreaCount=0;
protected $areaObject=null; //Form
function getHTML($newRow=false){
if ($newRow==true)
$className="newrow";
else
$className="newArea col";
$areaId="area_".uniqid();
$responseStr="<div id='$areaId' class='$className'></div>|";
$responseStr.="{areaId:'$areaId'}";
return $responseStr;
}
function __construct($parentArea){
$this->parentArea=$parentArea;
}
}
?>
another page
<?php
$design=new Design();
$newArea=$design->newArea();
$_SESSION["Design"]=serialize($design); //this is just serialize Design object. Not area objects in Design object
?>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
hmm...
The solution is for another trouble but seems to work.
It think that the autoload is better for a simple reason. All data will be in the Server Side so, why transfer a lot of data between Client/Server?
Whit code above you can put into a general include header and at any time do this
<?php
$to_save['var_name']=$var_ name;
$to_save['ObjectName']=$Ob jectName;
?>
But, Objects that point to another Object or is extended from another class need that the parent or pointed classes available and the solution is __autoload function (a magic function);
Its almost a persistance like JAVA do (I said almost).
Some vars cannot be saved this way (or any other way) like resources (any kind).
The code below is a snipplet that create the main mecanism to use this kind of persistance.
The function __autoload above complete the code.
The solution is for another trouble but seems to work.
It think that the autoload is better for a simple reason. All data will be in the Server Side so, why transfer a lot of data between Client/Server?
Whit code above you can put into a general include header and at any time do this
<?php
$to_save['var_name']=$var_
$to_save['ObjectName']=$Ob
?>
But, Objects that point to another Object or is extended from another class need that the parent or pointed classes available and the solution is __autoload function (a magic function);
Its almost a persistance like JAVA do (I said almost).
Some vars cannot be saved this way (or any other way) like resources (any kind).
The code below is a snipplet that create the main mecanism to use this kind of persistance.
The function __autoload above complete the code.
<?php
function serializeVars(){
if(isset($GLOBALS['to_save'])){
$_SESSION['saved_vars']=serialize($to_save);
}
}
// When script ends call this function
register_shutdown_function(serializeVars'');
// a general session start
if(session_id()==""){
session_start();
}
if(isset($_SESSION['saved_vars'])){
extract($_SESSION['saved_vars']);
// now all saved Vars, including arrays and Objects in the session will be available again
}
$to_save=arary();
?>
ASKER
i've applied _autoload. it's okay. thanks
ASKER
https://www.experts-exchange.com/questions/23798797/serializing-session-objects.html?sfQueryTermInfo=1+object+php+serial