private function deserialiseObject($value, $class_name)
{
if ($value === null) {
return null;
}
$ref = new \ReflectionClass($class_name);
if ($ref->implementsInterface('\\Serializable')) {
$obj = $ref->newInstanceWithoutConstructor();
$obj->unserialize($value);
return $obj;
} elseif ($ref->implementsInterface('Bravo3\\Orm\\Traits\\SerialisableInterface')) {
return call_user_func($class_name . '::deserialise', $value);
} else {
if (is_object($value)) {
throw new InvalidArgumentException(get_class($value) . " is not serialisable");
} else {
throw new InvalidArgumentException("Value is not serialisable");
}
}
}