1--TEST--
2json_encode() with JSON_PRETTY_PRINT on declared properties
3--FILE--
4<?php
5class MyClass {
6    public $x;
7    public $y;
8    public function __construct($x = 123, $y = []) {
9        $this->x = $x;
10        $this->y = $y;
11    }
12}
13
14class HasNoProperties {}
15
16echo json_encode(new HasNoProperties()), "\n";
17echo json_encode(new HasNoProperties(), JSON_PRETTY_PRINT), "\n";
18
19echo json_encode(new MyClass()), "\n";
20echo json_encode(new MyClass(), JSON_PRETTY_PRINT), "\n";
21$obj = new MyClass();
22$obj->dynamic = new MyClass(null, []);
23echo json_encode($obj), "\n";
24echo json_encode($obj, JSON_PRETTY_PRINT), "\n";
25$obj = new MyClass();
26unset($obj->y);
27echo json_encode($obj), "\n";
28echo json_encode($obj, JSON_PRETTY_PRINT), "\n";
29unset($obj->x);
30echo json_encode($obj), "\n";
31echo json_encode($obj, JSON_PRETTY_PRINT), "\n";
32?>
33--EXPECT--
34{}
35{}
36{"x":123,"y":[]}
37{
38    "x": 123,
39    "y": []
40}
41{"x":123,"y":[],"dynamic":{"x":null,"y":[]}}
42{
43    "x": 123,
44    "y": [],
45    "dynamic": {
46        "x": null,
47        "y": []
48    }
49}
50{"x":123}
51{
52    "x": 123
53}
54{}
55{}