- unserialize: documentation ( source)
- var_export: documentation ( source)
- serialize: documentation ( source)
- spl_object_hash: documentation ( source)
- printf: documentation ( source)
<?php
class testClass_forSerialize implements Serializable {
public function serialize() {
static $count = 0;
static $objectHashes = [];
$ret = new \stdClass();
$serializedData = serialize($ret);
$objectHash = spl_object_hash($ret);
echo "loop $count: ObjectHash $objectHash Received: ".$serializedData."\n";
if (array_key_exists($objectHash, $objectHashes) == true) {
echo "Object hash already exists - serialize is going to be sad.\n";
}
$objectHashes[$objectHash] = $count;
if (@unserialize($serializedData) === false) {
printf(
"borked, serialize of %s returned %s which could not be unserialized.\n",
var_export($ret, true),
$serializedData
);
exit(0);
}
echo "loop $count: Returning '$serializedData'\n";
$count++;
return $serializedData;
}
public function unserialize($data) {
throw new \Exception("not relevant");
}
}
$list = [];
for ($i=0; $i<2; $i++) {
$list[] = new \testClass_forSerialize();
}
$ser = serialize($list);