- var_dump: documentation ( source)
- unserialize: documentation ( source)
- serialize: documentation ( source)
- array_keys: documentation ( source)
- get_object_vars: documentation ( source)
<?php
# base class
class Test_TestClassBase
{
public $x = 4;
public function __wakeup()
{
var_dump("__wakeup");
}
public function __sleep()
{
var_dump("__sleep");
return array_keys(get_object_vars($this));
}
public function unserialize($input)
{
var_dump("unserialize");
}
public function serialize()
{
var_dump("serialize");
return serialize(get_object_vars($this));
}
}
# derived classes
class Test_TestClassA extends Test_TestClassBase {}
class Test_TestClassB extends Test_TestClassBase implements Serializable {}
class Test_TestClassAA extends Test_TestClassA implements Serializable {}
class Test_TestClassBB extends Test_TestClassB {}
# run our serialisation
foreach(array("Test_TestClassA", "Test_TestClassB", "Test_TestClassAA", "Test_TestClassBB") as $class)
{
$serialised = 'O:'.strlen($class).':"'.$class.'":1:{s:1:"x";i:4;}';
var_dump("(input) ".$serialised);
var_dump("(output) ".(unserialize($serialised) instanceof $class ? "true (passing)" : "false (failing)"));
}