xref: /php-src/Zend/tests/property_hooks/dump.phpt (revision 780a8280)
1--TEST--
2Dumping object with property hooks
3--FILE--
4<?php
5
6class Test {
7    public $addedHooks = 'addedHooks';
8    public $virtual {
9        get { return strtoupper('virtual'); }
10    }
11    public $backed = 'backed' {
12        get { return strtoupper($this->backed); }
13        set { $this->backed = $value; }
14    }
15    public $writeOnly {
16        set {}
17    }
18    private $private = 'private' {
19        get { return strtoupper($this->private); }
20        set { $this->private = $value; }
21    }
22    private $changed = 'changed Test' {
23        get { return strtoupper($this->changed); }
24    }
25    public function dumpTest() {
26        var_dump($this);
27        var_dump(get_object_vars($this));
28        var_dump(get_mangled_object_vars($this));
29        var_export($this);
30        echo "\n";
31        echo json_encode($this), "\n";
32        var_dump((array) $this);
33    }
34}
35
36class Child extends Test {
37    public $addedHooks {
38        get { return strtoupper(parent::$addedHooks::get()); }
39    }
40    private $changed = 'changed Child' {
41        get { return strtoupper($this->changed); }
42    }
43    public function dumpChild() {
44        var_dump($this);
45        var_dump(get_object_vars($this));
46        var_export($this);
47        echo "\n";
48        echo json_encode($this), "\n";
49        var_dump((array) $this);
50    }
51}
52
53function dump($test) {
54    var_dump($test);
55    var_dump(get_object_vars($test));
56    var_export($test);
57    echo "\n";
58    echo json_encode($test), "\n";
59    var_dump((array) $test);
60}
61
62dump(new Test);
63dump(new Child);
64(new Child)->dumpTest();
65(new Child)->dumpChild();
66
67?>
68--EXPECTF--
69object(Test)#%d (4) {
70  ["addedHooks"]=>
71  string(10) "addedHooks"
72  ["backed"]=>
73  string(6) "backed"
74  ["private":"Test":private]=>
75  string(7) "private"
76  ["changed":"Test":private]=>
77  string(12) "changed Test"
78}
79array(3) {
80  ["addedHooks"]=>
81  string(10) "addedHooks"
82  ["virtual"]=>
83  string(7) "VIRTUAL"
84  ["backed"]=>
85  string(6) "BACKED"
86}
87\Test::__set_state(array(
88   'addedHooks' => 'addedHooks',
89   'virtual' => 'VIRTUAL',
90   'backed' => 'BACKED',
91   'private' => 'PRIVATE',
92   'changed' => 'CHANGED TEST',
93))
94{"addedHooks":"addedHooks","virtual":"VIRTUAL","backed":"BACKED"}
95array(4) {
96  ["addedHooks"]=>
97  string(10) "addedHooks"
98  ["backed"]=>
99  string(6) "backed"
100  ["%0Test%0private"]=>
101  string(7) "private"
102  ["%0Test%0changed"]=>
103  string(12) "changed Test"
104}
105object(Child)#%d (5) {
106  ["addedHooks"]=>
107  string(10) "addedHooks"
108  ["backed"]=>
109  string(6) "backed"
110  ["private":"Test":private]=>
111  string(7) "private"
112  ["changed":"Test":private]=>
113  string(12) "changed Test"
114  ["changed":"Child":private]=>
115  string(13) "changed Child"
116}
117array(3) {
118  ["addedHooks"]=>
119  string(10) "ADDEDHOOKS"
120  ["virtual"]=>
121  string(7) "VIRTUAL"
122  ["backed"]=>
123  string(6) "BACKED"
124}
125\Child::__set_state(array(
126   'addedHooks' => 'ADDEDHOOKS',
127   'changed' => 'CHANGED CHILD',
128   'virtual' => 'VIRTUAL',
129   'backed' => 'BACKED',
130   'private' => 'PRIVATE',
131   'changed' => 'changed Child',
132))
133{"addedHooks":"ADDEDHOOKS","virtual":"VIRTUAL","backed":"BACKED"}
134array(5) {
135  ["addedHooks"]=>
136  string(10) "addedHooks"
137  ["backed"]=>
138  string(6) "backed"
139  ["%0Test%0private"]=>
140  string(7) "private"
141  ["%0Test%0changed"]=>
142  string(12) "changed Test"
143  ["%0Child%0changed"]=>
144  string(13) "changed Child"
145}
146object(Child)#%d (5) {
147  ["addedHooks"]=>
148  string(10) "addedHooks"
149  ["backed"]=>
150  string(6) "backed"
151  ["private":"Test":private]=>
152  string(7) "private"
153  ["changed":"Test":private]=>
154  string(12) "changed Test"
155  ["changed":"Child":private]=>
156  string(13) "changed Child"
157}
158array(4) {
159  ["addedHooks"]=>
160  string(10) "ADDEDHOOKS"
161  ["virtual"]=>
162  string(7) "VIRTUAL"
163  ["backed"]=>
164  string(6) "BACKED"
165  ["private"]=>
166  string(7) "PRIVATE"
167}
168array(5) {
169  ["addedHooks"]=>
170  string(10) "addedHooks"
171  ["backed"]=>
172  string(6) "backed"
173  ["%0Test%0private"]=>
174  string(7) "private"
175  ["%0Test%0changed"]=>
176  string(12) "changed Test"
177  ["%0Child%0changed"]=>
178  string(13) "changed Child"
179}
180\Child::__set_state(array(
181   'addedHooks' => 'ADDEDHOOKS',
182   'changed' => 'CHANGED CHILD',
183   'virtual' => 'VIRTUAL',
184   'backed' => 'BACKED',
185   'private' => 'PRIVATE',
186   'changed' => 'changed Child',
187))
188{"addedHooks":"ADDEDHOOKS","virtual":"VIRTUAL","backed":"BACKED"}
189array(5) {
190  ["addedHooks"]=>
191  string(10) "addedHooks"
192  ["backed"]=>
193  string(6) "backed"
194  ["%0Test%0private"]=>
195  string(7) "private"
196  ["%0Test%0changed"]=>
197  string(12) "changed Test"
198  ["%0Child%0changed"]=>
199  string(13) "changed Child"
200}
201object(Child)#%d (5) {
202  ["addedHooks"]=>
203  string(10) "addedHooks"
204  ["backed"]=>
205  string(6) "backed"
206  ["private":"Test":private]=>
207  string(7) "private"
208  ["changed":"Test":private]=>
209  string(12) "changed Test"
210  ["changed":"Child":private]=>
211  string(13) "changed Child"
212}
213array(5) {
214  ["addedHooks"]=>
215  string(10) "ADDEDHOOKS"
216  ["changed"]=>
217  string(13) "CHANGED CHILD"
218  ["virtual"]=>
219  string(7) "VIRTUAL"
220  ["backed"]=>
221  string(6) "BACKED"
222  ["changed"]=>
223  string(13) "changed Child"
224}
225\Child::__set_state(array(
226   'addedHooks' => 'ADDEDHOOKS',
227   'changed' => 'CHANGED CHILD',
228   'virtual' => 'VIRTUAL',
229   'backed' => 'BACKED',
230   'private' => 'PRIVATE',
231   'changed' => 'changed Child',
232))
233{"addedHooks":"ADDEDHOOKS","virtual":"VIRTUAL","backed":"BACKED"}
234array(5) {
235  ["addedHooks"]=>
236  string(10) "addedHooks"
237  ["backed"]=>
238  string(6) "backed"
239  ["%0Test%0private"]=>
240  string(7) "private"
241  ["%0Test%0changed"]=>
242  string(12) "changed Test"
243  ["%0Child%0changed"]=>
244  string(13) "changed Child"
245}
246