[php-src] Issue #14402: SplPriorityQueue does not support serialization
| From: | nikic | Date: | Sat, 01 Jun 2024 08:40:21 +0000 |
| Subject: | [php-src] Issue #14402: SplPriorityQueue does not support serialization | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-247007@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/14402
Author: nikic
### Description
The following code:
```php
<?php
$bar = new \SplPriorityQueue();
$bar->insert('a', 1);
var_dump($bar);
var_dump(unserialize(serialize($bar)));
```
Resulted in this output:
```
object(SplPriorityQueue)#1 (3) {
["flags":"SplPriorityQueue":private]=>
int(1)
["isCorrupted":"SplPriorityQueue":private]=>
bool(false)
["heap":"SplPriorityQueue":private]=>
array(1) {
[0]=>
array(2) {
["data"]=>
string(1) "a"
["priority"]=>
int(1)
}
}
}
object(SplPriorityQueue)#2 (3) {
["flags":"SplPriorityQueue":private]=>
int(1)
["isCorrupted":"SplPriorityQueue":private]=>
bool(false)
["heap":"SplPriorityQueue":private]=>
array(0) {
}
}
```
But I expected this output instead:
```
object(SplPriorityQueue)#1 (3) {
["flags":"SplPriorityQueue":private]=>
int(1)
["isCorrupted":"SplPriorityQueue":private]=>
bool(false)
["heap":"SplPriorityQueue":private]=>
array(1) {
[0]=>
array(2) {
["data"]=>
string(1) "a"
["priority"]=>
int(1)
}
}
}
object(SplPriorityQueue)#2 (3) {
["flags":"SplPriorityQueue":private]=>
int(1)
["isCorrupted":"SplPriorityQueue":private]=>
bool(false)
["heap":"SplPriorityQueue":private]=>
array(1) {
[0]=>
array(2) {
["data"]=>
string(1) "a"
["priority"]=>
int(1)
}
}
}
```
Disclaimer: I don't have any need for this myself, just cross-posting an issue originally
reported against apcu in https://github.com/krakjoe/apcu/issues/505. It
does seem weird that an SPL container cannot be serialized (or rather, loses data on serialization)
though.
### PHP Version
All
### Operating System
_No response_