3v4l.org

run code in 500+ PHP versions simultaneously
<?php $info = new SplFileInfo( __FILE__ ); try { serialize($info); } catch (\Throwable $e) { echo $e . "\n\n\n"; } class MyFileInfo extends SplFileInfo { public function __serialize(): array { return [ 'file' => getPathname(), ]; } public function __unserialize(array $data) { $this->__construct($data['file']); } } $info2 = new MyFileInfo( __FILE__ ); try { $serialized = serialize($info2); $roundtrip = unserialize($serialized); var_dump($info2, $roundtrip); } catch (\Throwable $e) { echo $e . "\n"; }
Output for 8.5.7
Exception: Serialization of 'SplFileInfo' is not allowed in /in/SVqho:5 Stack trace: #0 /in/SVqho(5): serialize(Object(SplFileInfo)) #1 {main} Exception: Serialization of 'MyFileInfo' is not allowed in /in/SVqho:24 Stack trace: #0 /in/SVqho(24): serialize(Object(MyFileInfo)) #1 {main}

preferences:
62.01 ms | 481 KiB | 4 Q