1--TEST--
2Test pathinfo() function: usage variations
3--FILE--
4<?php
5echo "*** Testing pathinfo() with miscellaneous input arguments ***\n";
6
7$fp = fopen(__FILE__, "r");
8unset($fp);
9
10class object_temp {
11  public $url_var = "www.foo.com";
12  var $html_var = "/var/html/testdir/example.html";
13  var $dir_var = "/testdir/foo/test/";
14  public $file_var = "/foo//symlink.link";
15  var $number = 12345;
16}
17$obj = new object_temp();
18
19$path_arr = array (
20  "www.example.com",
21  "/testdir/foo//test/",
22  "../foo/test.link",
23  "./test/work/scratch/mydir/yourdir/ourdir/test1/test2/test3/test4/test5/test6/test.tmp",
24  2.345
25);
26
27$paths = array (
28  /* pathname containing numeric string */
29  0,
30  1234,
31  -1234,
32  2.3456,
33
34  /* pathname as boolean */
35  TRUE,
36  FALSE,
37
38  /* pathname as an array */
39  "./array(1, 2)",
40  "array( array(), null)",
41
42  /* pathname as spaces */
43  " ",
44  ' ',
45
46  /* empty pathname */
47  "",
48  '',
49
50  /* pathname as NULL */
51  NULL,
52  null,
53
54  /* filename as resource */
55  $fp,
56
57  /* pathname as members of object */
58  $obj->url_var,
59  $obj->html_var,
60  $obj->dir_var,
61  $obj->file_var,
62  $obj->number,
63
64  /* pathname as member of array */
65  $path_arr[0],
66  $path_arr[1],
67  $path_arr[2],
68  $path_arr[3],
69  $path_arr[4]
70);
71
72$counter = 1;
73/* loop through $paths to test each $path in the above array */
74foreach($paths as $path) {
75  echo "-- Iteration $counter --\n";
76  var_dump( pathinfo($path) );
77  var_dump( pathinfo($path, PATHINFO_DIRNAME) );
78  var_dump( pathinfo($path, PATHINFO_BASENAME) );
79  var_dump( pathinfo($path, PATHINFO_EXTENSION) );
80  var_dump( pathinfo($path, PATHINFO_FILENAME) );
81  $counter++;
82}
83
84echo "Done\n";
85?>
86--EXPECTF--
87*** Testing pathinfo() with miscellaneous input arguments ***
88
89Warning: Undefined variable $fp in %s on line %d
90-- Iteration 1 --
91array(3) {
92  ["dirname"]=>
93  string(1) "."
94  ["basename"]=>
95  string(1) "0"
96  ["filename"]=>
97  string(1) "0"
98}
99string(1) "."
100string(1) "0"
101string(0) ""
102string(1) "0"
103-- Iteration 2 --
104array(3) {
105  ["dirname"]=>
106  string(1) "."
107  ["basename"]=>
108  string(4) "1234"
109  ["filename"]=>
110  string(4) "1234"
111}
112string(1) "."
113string(4) "1234"
114string(0) ""
115string(4) "1234"
116-- Iteration 3 --
117array(3) {
118  ["dirname"]=>
119  string(1) "."
120  ["basename"]=>
121  string(5) "-1234"
122  ["filename"]=>
123  string(5) "-1234"
124}
125string(1) "."
126string(5) "-1234"
127string(0) ""
128string(5) "-1234"
129-- Iteration 4 --
130array(4) {
131  ["dirname"]=>
132  string(1) "."
133  ["basename"]=>
134  string(6) "2.3456"
135  ["extension"]=>
136  string(4) "3456"
137  ["filename"]=>
138  string(1) "2"
139}
140string(1) "."
141string(6) "2.3456"
142string(4) "3456"
143string(1) "2"
144-- Iteration 5 --
145array(3) {
146  ["dirname"]=>
147  string(1) "."
148  ["basename"]=>
149  string(1) "1"
150  ["filename"]=>
151  string(1) "1"
152}
153string(1) "."
154string(1) "1"
155string(0) ""
156string(1) "1"
157-- Iteration 6 --
158array(2) {
159  ["basename"]=>
160  string(0) ""
161  ["filename"]=>
162  string(0) ""
163}
164string(0) ""
165string(0) ""
166string(0) ""
167string(0) ""
168-- Iteration 7 --
169array(3) {
170  ["dirname"]=>
171  string(1) "."
172  ["basename"]=>
173  string(11) "array(1, 2)"
174  ["filename"]=>
175  string(11) "array(1, 2)"
176}
177string(1) "."
178string(11) "array(1, 2)"
179string(0) ""
180string(11) "array(1, 2)"
181-- Iteration 8 --
182array(3) {
183  ["dirname"]=>
184  string(1) "."
185  ["basename"]=>
186  string(21) "array( array(), null)"
187  ["filename"]=>
188  string(21) "array( array(), null)"
189}
190string(1) "."
191string(21) "array( array(), null)"
192string(0) ""
193string(21) "array( array(), null)"
194-- Iteration 9 --
195array(3) {
196  ["dirname"]=>
197  string(1) "."
198  ["basename"]=>
199  string(1) " "
200  ["filename"]=>
201  string(1) " "
202}
203string(1) "."
204string(1) " "
205string(0) ""
206string(1) " "
207-- Iteration 10 --
208array(3) {
209  ["dirname"]=>
210  string(1) "."
211  ["basename"]=>
212  string(1) " "
213  ["filename"]=>
214  string(1) " "
215}
216string(1) "."
217string(1) " "
218string(0) ""
219string(1) " "
220-- Iteration 11 --
221array(2) {
222  ["basename"]=>
223  string(0) ""
224  ["filename"]=>
225  string(0) ""
226}
227string(0) ""
228string(0) ""
229string(0) ""
230string(0) ""
231-- Iteration 12 --
232array(2) {
233  ["basename"]=>
234  string(0) ""
235  ["filename"]=>
236  string(0) ""
237}
238string(0) ""
239string(0) ""
240string(0) ""
241string(0) ""
242-- Iteration 13 --
243array(2) {
244  ["basename"]=>
245  string(0) ""
246  ["filename"]=>
247  string(0) ""
248}
249string(0) ""
250string(0) ""
251string(0) ""
252string(0) ""
253-- Iteration 14 --
254array(2) {
255  ["basename"]=>
256  string(0) ""
257  ["filename"]=>
258  string(0) ""
259}
260string(0) ""
261string(0) ""
262string(0) ""
263string(0) ""
264-- Iteration 15 --
265array(2) {
266  ["basename"]=>
267  string(0) ""
268  ["filename"]=>
269  string(0) ""
270}
271string(0) ""
272string(0) ""
273string(0) ""
274string(0) ""
275-- Iteration 16 --
276array(4) {
277  ["dirname"]=>
278  string(1) "."
279  ["basename"]=>
280  string(11) "www.foo.com"
281  ["extension"]=>
282  string(3) "com"
283  ["filename"]=>
284  string(7) "www.foo"
285}
286string(1) "."
287string(11) "www.foo.com"
288string(3) "com"
289string(7) "www.foo"
290-- Iteration 17 --
291array(4) {
292  ["dirname"]=>
293  string(17) "/var/html/testdir"
294  ["basename"]=>
295  string(12) "example.html"
296  ["extension"]=>
297  string(4) "html"
298  ["filename"]=>
299  string(7) "example"
300}
301string(17) "/var/html/testdir"
302string(12) "example.html"
303string(4) "html"
304string(7) "example"
305-- Iteration 18 --
306array(3) {
307  ["dirname"]=>
308  string(12) "/testdir/foo"
309  ["basename"]=>
310  string(4) "test"
311  ["filename"]=>
312  string(4) "test"
313}
314string(12) "/testdir/foo"
315string(4) "test"
316string(0) ""
317string(4) "test"
318-- Iteration 19 --
319array(4) {
320  ["dirname"]=>
321  string(4) "/foo"
322  ["basename"]=>
323  string(12) "symlink.link"
324  ["extension"]=>
325  string(4) "link"
326  ["filename"]=>
327  string(7) "symlink"
328}
329string(4) "/foo"
330string(12) "symlink.link"
331string(4) "link"
332string(7) "symlink"
333-- Iteration 20 --
334array(3) {
335  ["dirname"]=>
336  string(1) "."
337  ["basename"]=>
338  string(5) "12345"
339  ["filename"]=>
340  string(5) "12345"
341}
342string(1) "."
343string(5) "12345"
344string(0) ""
345string(5) "12345"
346-- Iteration 21 --
347array(4) {
348  ["dirname"]=>
349  string(1) "."
350  ["basename"]=>
351  string(15) "www.example.com"
352  ["extension"]=>
353  string(3) "com"
354  ["filename"]=>
355  string(11) "www.example"
356}
357string(1) "."
358string(15) "www.example.com"
359string(3) "com"
360string(11) "www.example"
361-- Iteration 22 --
362array(3) {
363  ["dirname"]=>
364  string(12) "/testdir/foo"
365  ["basename"]=>
366  string(4) "test"
367  ["filename"]=>
368  string(4) "test"
369}
370string(12) "/testdir/foo"
371string(4) "test"
372string(0) ""
373string(4) "test"
374-- Iteration 23 --
375array(4) {
376  ["dirname"]=>
377  string(6) "../foo"
378  ["basename"]=>
379  string(9) "test.link"
380  ["extension"]=>
381  string(4) "link"
382  ["filename"]=>
383  string(4) "test"
384}
385string(6) "../foo"
386string(9) "test.link"
387string(4) "link"
388string(4) "test"
389-- Iteration 24 --
390array(4) {
391  ["dirname"]=>
392  string(76) "./test/work/scratch/mydir/yourdir/ourdir/test1/test2/test3/test4/test5/test6"
393  ["basename"]=>
394  string(8) "test.tmp"
395  ["extension"]=>
396  string(3) "tmp"
397  ["filename"]=>
398  string(4) "test"
399}
400string(76) "./test/work/scratch/mydir/yourdir/ourdir/test1/test2/test3/test4/test5/test6"
401string(8) "test.tmp"
402string(3) "tmp"
403string(4) "test"
404-- Iteration 25 --
405array(4) {
406  ["dirname"]=>
407  string(1) "."
408  ["basename"]=>
409  string(5) "2.345"
410  ["extension"]=>
411  string(3) "345"
412  ["filename"]=>
413  string(1) "2"
414}
415string(1) "."
416string(5) "2.345"
417string(3) "345"
418string(1) "2"
419Done
420