mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
53aa53f42f
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
42 lines
762 B
PHP
42 lines
762 B
PHP
--TEST--
|
|
json_encode() Recursion test with JsonSerializable, __debugInfo and var_export
|
|
--FILE--
|
|
<?php
|
|
|
|
class SerializingTest implements JsonSerializable
|
|
{
|
|
public $a = 1;
|
|
|
|
public function __debugInfo()
|
|
{
|
|
return [ 'result' => var_export($this, true) ];
|
|
}
|
|
|
|
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"]=>
|
|
string(52) "\SerializingTest::__set_state(array(
|
|
'a' => 1,
|
|
))"
|
|
}
|
|
string(7) "{"a":1}"
|
|
---------
|
|
object(SerializingTest)#1 (1) {
|
|
["result"]=>
|
|
string(52) "\SerializingTest::__set_state(array(
|
|
'a' => 1,
|
|
))"
|
|
}
|