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.2.31 - 8.2.32, 8.3.5 - 8.3.32, 8.4.9 - 8.4.23, 8.5.6 - 8.5.9
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:
29.3 ms | 546 KiB | 4 Q