mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00

This PR introduces a new way of recursion protection in JSON, var_dump and friends. It fixes issue in master for __debugInfo and also improves perf for jsonSerializable in some cases. More info can be found in GH-10020. Closes GH-11812
38 lines
657 B
PHP
38 lines
657 B
PHP
--TEST--
|
|
json_encode() Recursion test with JsonSerializable and __debugInfo
|
|
--FILE--
|
|
<?php
|
|
|
|
class SerializingTest implements JsonSerializable
|
|
{
|
|
public $a = 1;
|
|
|
|
public function __debugInfo()
|
|
{
|
|
return [ 'result' => json_encode($this) ];
|
|
}
|
|
|
|
public function jsonSerialize(): mixed
|
|
{
|
|
var_dump($this);
|
|
return $this;
|
|
}
|
|
}
|
|
|
|
var_dump(json_encode(new SerializingTest()));
|
|
echo "---------\n";
|
|
var_dump(new SerializingTest());
|
|
|
|
?>
|
|
--EXPECT--
|
|
object(SerializingTest)#1 (1) {
|
|
["result"]=>
|
|
bool(false)
|
|
}
|
|
string(7) "{"a":1}"
|
|
---------
|
|
*RECURSION*
|
|
object(SerializingTest)#1 (1) {
|
|
["result"]=>
|
|
string(7) "{"a":1}"
|
|
}
|