- var_dump: documentation ( source)
- array_intersect_key: documentation ( source)
- is_callable: documentation ( source)
<?php
$start = new DateTime('yesterday');
$restrict_array = array();
if (is_callable(array($start, '__sleep'))) {
echo "Called: __sleep()".PHP_EOL;
var_dump($restrict_array = $start->__sleep());
echo PHP_EOL.PHP_EOL.PHP_EOL;
}
$serialized = array(
'class' => get_class($start),
'state' => (array) $start
);
if (!empty($restrict_array)) {
$serialized['state'] = array_intersect_key($serialized['state'], $restrict_array);
}
echo "Serialized Data:".PHP_EOL;
var_dump($serialized);
echo PHP_EOL.PHP_EOL.PHP_EOL;
unset($start);
if (is_callable(array($serialized['class'], '__set_state'))) {
echo "Called: __set_state()".PHP_EOL;
var_dump($serialized['class']::__set_state($serialized['state']));
echo PHP_EOL.PHP_EOL.PHP_EOL;
}
if (is_callable(array($serialized['class'], '__wakeup'))) {
echo "Called: __wakeup()".PHP_EOL;
$serialized['class']::__wakeup();
}