1--TEST--
2Test var_export() function with valid objects
3--FILE--
4<?php
5echo "*** Testing var_export() with valid objects ***\n";
6
7// class with no members
8class foo
9{
10// no members
11}
12
13// abstract class
14abstract class abstractClass
15{
16  abstract protected function getClassName();
17  public function printClassName () {
18    echo $this->getClassName() . "\n";
19  }
20}
21// implement abstract class
22class concreteClass extends abstractClass
23{
24  protected function getClassName() {
25    return "concreteClass";
26  }
27}
28
29// interface class
30interface iValue
31{
32   public function setVal ($name, $val);
33   public function dumpVal ();
34}
35// implement the interface
36class Value implements iValue
37{
38  private $vars = array ();
39
40  public function setVal ( $name, $val ) {
41    $this->vars[$name] = $val;
42  }
43
44  public function dumpVal () {
45    var_export ( $vars );
46  }
47}
48
49// a gereral class
50class myClass
51{
52  var $foo_object;
53  public $public_var;
54  public $public_var1;
55  private $private_var;
56  protected $protected_var;
57
58  function __construct ( ) {
59    $this->foo_object = new foo();
60    $this->public_var = 10;
61    $this->public_var1 = new foo();
62    $this->private_var = new foo();
63    $this->protected_var = new foo();
64  }
65}
66
67// create a object of each class defined above
68$myClass_object = new myClass();
69$foo_object = new foo();
70$Value_object = new Value();
71$concreteClass_object = new concreteClass();
72
73$valid_objects = array(
74                  "new stdclass" => new stdclass,
75                  "new foo" => new foo,
76                  "new concreteClass" => new concreteClass,
77                  "new Value" => new Value,
78                  "new myClass" => new myClass,
79                  "myClass_object" => $myClass_object,
80                  "myClass_object->foo_object" => $myClass_object->foo_object,
81                  "myClass_object->public_var1" => $myClass_object->public_var1,
82                  "foo_object" => $foo_object,
83                  "Value_object" => $Value_object,
84                  "concreteClass_object" => $concreteClass_object
85                 );
86/* Loop to check for above objects with var_export() */
87echo "\n*** Output for objects ***\n";
88foreach($valid_objects as $key => $obj) {
89    echo "\n-- Iteration: $key --\n";
90    var_export( $obj );
91    echo "\n";
92    var_export( $obj, FALSE);
93    echo "\n";
94    var_dump( var_export( $obj, TRUE) );
95    echo "\n";
96}
97?>
98--EXPECT--
99*** Testing var_export() with valid objects ***
100
101*** Output for objects ***
102
103-- Iteration: new stdclass --
104(object) array(
105)
106(object) array(
107)
108string(17) "(object) array(
109)"
110
111
112-- Iteration: new foo --
113\foo::__set_state(array(
114))
115\foo::__set_state(array(
116))
117string(27) "\foo::__set_state(array(
118))"
119
120
121-- Iteration: new concreteClass --
122\concreteClass::__set_state(array(
123))
124\concreteClass::__set_state(array(
125))
126string(37) "\concreteClass::__set_state(array(
127))"
128
129
130-- Iteration: new Value --
131\Value::__set_state(array(
132   'vars' =>
133  array (
134  ),
135))
136\Value::__set_state(array(
137   'vars' =>
138  array (
139  ),
140))
141string(58) "\Value::__set_state(array(
142   'vars' =>
143  array (
144  ),
145))"
146
147
148-- Iteration: new myClass --
149\myClass::__set_state(array(
150   'foo_object' =>
151  \foo::__set_state(array(
152  )),
153   'public_var' => 10,
154   'public_var1' =>
155  \foo::__set_state(array(
156  )),
157   'private_var' =>
158  \foo::__set_state(array(
159  )),
160   'protected_var' =>
161  \foo::__set_state(array(
162  )),
163))
164\myClass::__set_state(array(
165   'foo_object' =>
166  \foo::__set_state(array(
167  )),
168   'public_var' => 10,
169   'public_var1' =>
170  \foo::__set_state(array(
171  )),
172   'private_var' =>
173  \foo::__set_state(array(
174  )),
175   'protected_var' =>
176  \foo::__set_state(array(
177  )),
178))
179string(271) "\myClass::__set_state(array(
180   'foo_object' =>
181  \foo::__set_state(array(
182  )),
183   'public_var' => 10,
184   'public_var1' =>
185  \foo::__set_state(array(
186  )),
187   'private_var' =>
188  \foo::__set_state(array(
189  )),
190   'protected_var' =>
191  \foo::__set_state(array(
192  )),
193))"
194
195
196-- Iteration: myClass_object --
197\myClass::__set_state(array(
198   'foo_object' =>
199  \foo::__set_state(array(
200  )),
201   'public_var' => 10,
202   'public_var1' =>
203  \foo::__set_state(array(
204  )),
205   'private_var' =>
206  \foo::__set_state(array(
207  )),
208   'protected_var' =>
209  \foo::__set_state(array(
210  )),
211))
212\myClass::__set_state(array(
213   'foo_object' =>
214  \foo::__set_state(array(
215  )),
216   'public_var' => 10,
217   'public_var1' =>
218  \foo::__set_state(array(
219  )),
220   'private_var' =>
221  \foo::__set_state(array(
222  )),
223   'protected_var' =>
224  \foo::__set_state(array(
225  )),
226))
227string(271) "\myClass::__set_state(array(
228   'foo_object' =>
229  \foo::__set_state(array(
230  )),
231   'public_var' => 10,
232   'public_var1' =>
233  \foo::__set_state(array(
234  )),
235   'private_var' =>
236  \foo::__set_state(array(
237  )),
238   'protected_var' =>
239  \foo::__set_state(array(
240  )),
241))"
242
243
244-- Iteration: myClass_object->foo_object --
245\foo::__set_state(array(
246))
247\foo::__set_state(array(
248))
249string(27) "\foo::__set_state(array(
250))"
251
252
253-- Iteration: myClass_object->public_var1 --
254\foo::__set_state(array(
255))
256\foo::__set_state(array(
257))
258string(27) "\foo::__set_state(array(
259))"
260
261
262-- Iteration: foo_object --
263\foo::__set_state(array(
264))
265\foo::__set_state(array(
266))
267string(27) "\foo::__set_state(array(
268))"
269
270
271-- Iteration: Value_object --
272\Value::__set_state(array(
273   'vars' =>
274  array (
275  ),
276))
277\Value::__set_state(array(
278   'vars' =>
279  array (
280  ),
281))
282string(58) "\Value::__set_state(array(
283   'vars' =>
284  array (
285  ),
286))"
287
288
289-- Iteration: concreteClass_object --
290\concreteClass::__set_state(array(
291))
292\concreteClass::__set_state(array(
293))
294string(37) "\concreteClass::__set_state(array(
295))"
296