- var_dump: documentation ( source)
- unserialize: documentation ( source)
- serialize: documentation ( source)
<?php
class parentobj implements Serializable
{
protected $data;
protected $extradata;
public function __construct() {
$this->data = new temp("My private data");
}
public function getData() {
return $this->data;
}
public function setData($data) {
$this->data = $data;
}
public function getExtraData(){
$this->extradata = array(
'data1','data2'
);
}
public function serialize() {
return serialize(array(
$this->data,
$this->extradata,
));
}
public function unserialize($data) {
$orgdata = unserialize($data);
$this->data = $orgdata[0];
$this->extradata = $orgdata[1];
}
}
class childobj extends parentobj
{
protected $moredata;
public function __construct() {
return parent::__construct();
}
public function getExtraData(){
$this->extradata = array(
'datachild1','datachild2'
);
}
public function getMoreData(){
$this->moredata= array(
'more_data1','more_data2'
);
}
public function serialize() {
return serialize(array(
$this->data,
$this->extradata,
$this->moredata,
));
}
public function unserialize($data) {
$orgdata = unserialize($data);
$this->setData($orgdata[0]);
$this->extradata = $orgdata[1];
$this->moredata = $orgdata[2];
}
}
class temp
{
protected $name;
public function __construct($Name) {
$this->name = $Name;
}
}
$obj = new childobj();
$s = serialize($obj);
echo 'first serialize: '; var_dump($s);
$u = unserialize($s);
echo 'first unserialize: '; var_dump($u);
$u->getExtraData();
$u->getMoreData();
echo 'with extradata: '; var_dump($u);
$s2 = serialize($u);
echo 'second serialize: '; var_dump($s2);
$u2 = unserialize($s2);
echo 'second unserialize: '; var_dump($u2);