compat avec les nur/sery

This commit is contained in:
Jephté Clain 2025-01-29 11:27:25 +04:00
parent fd27e2ee37
commit 756502361f
1 changed files with 20 additions and 1 deletions

View File

@ -309,8 +309,27 @@ class Stream extends AbstractIterator implements IReader, IWriter {
}
}
/** @var bool faut-il faire un mapping pour la compatibilité avec nur/sery */
const UNSERIALIZE_NURSERY_COMPAT = true;
/**
* @var string[] mappings pour la compatibilité avec des fichiers générés par
* nur/sery
*/
const UNSERIALIZE_NURSERY_MAPPING = [
'O:22:"nur\sery\php\time\Date":' => 'O:19:"nulib\php\time\Date":',
'O:26:"nur\sery\php\time\DateTime":' => 'O:23:"nulib\php\time\DateTime":',
'O:23:"nur\sery\php\time\Delay":' => 'O:20:"nulib\php\time\Delay":',
];
function unserialize(?array $options=null, bool $close=true, bool $alreadyLocked=false) {
$args = [$this->getContents($close, $alreadyLocked)];
$contents = $this->getContents($close, $alreadyLocked);
if (static::UNSERIALIZE_NURSERY_COMPAT) {
foreach (self::UNSERIALIZE_NURSERY_MAPPING as $from => $to) {
$contents = str_replace($from, $to, $contents);
}
}
$args = [$contents];
if ($options !== null) $args[] = $options;
return unserialize(...$args);
}