1--TEST--
2Test parse_url() function : usage variations  - unexpected type for arg 2.
3--SKIPIF--
4<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only"); ?>
5--FILE--
6<?php
7/* Prototype  : proto mixed parse_url(string url, [int url_component])
8 * Description: Parse a URL and return its components
9 * Source code: ext/standard/url.c
10 * Alias to functions:
11 */
12
13function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
14	echo "Error: $err_no - $err_msg, $filename($linenum)\n";
15}
16set_error_handler('test_error_handler');
17
18echo "*** Testing parse_url() : usage variations ***\n";
19
20// Initialise function arguments not being substituted (if any)
21$url = 'http://secret:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123';
22
23//get an unset variable
24$unset_var = 10;
25unset ($unset_var);
26
27//array of values to iterate over
28$values = array(
29
30      // float data
31      10.5,
32      -10.5,
33      10.1234567e10,
34      10.7654321E-10,
35      .5,
36
37      // array data
38      array(),
39      array(0),
40      array(1),
41      array(1, 2),
42      array('color' => 'red', 'item' => 'pen'),
43
44      // null data
45      NULL,
46      null,
47
48      // boolean data
49      true,
50      false,
51      TRUE,
52      FALSE,
53
54      // empty data
55      "",
56      '',
57
58      // string data
59      "string",
60      'string',
61
62      // object data
63      new stdclass(),
64
65      // undefined data
66      $undefined_var,
67
68      // unset data
69      $unset_var,
70);
71
72// loop through each element of the array for url_component
73
74foreach($values as $value) {
75      echo "\nArg value $value \n";
76      var_dump( parse_url($url, $value) );
77};
78
79echo "Done";
80?>
81--EXPECTF--
82*** Testing parse_url() : usage variations ***
83Error: 8 - Undefined variable: undefined_var, %s(61)
84Error: 8 - Undefined variable: unset_var, %s(64)
85
86Arg value 10.5
87Error: 2 - parse_url(): Invalid URL component identifier 10, %s(71)
88bool(false)
89
90Arg value -10.5
91array(8) {
92  ["scheme"]=>
93  string(4) "http"
94  ["host"]=>
95  string(11) "www.php.net"
96  ["port"]=>
97  int(80)
98  ["user"]=>
99  string(6) "secret"
100  ["pass"]=>
101  string(7) "hideout"
102  ["path"]=>
103  string(10) "/index.php"
104  ["query"]=>
105  string(31) "test=1&test2=char&test3=mixesCI"
106  ["fragment"]=>
107  string(16) "some_page_ref123"
108}
109
110Arg value 101234567000
111Error: 2 - parse_url(): Invalid URL component identifier %d, %s(71)
112bool(false)
113
114Arg value 1.07654321E-9
115string(4) "http"
116
117Arg value 0.5
118string(4) "http"
119
120Arg value Array
121Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
122NULL
123
124Arg value Array
125Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
126NULL
127
128Arg value Array
129Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
130NULL
131
132Arg value Array
133Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
134NULL
135
136Arg value Array
137Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
138NULL
139
140Arg value
141string(4) "http"
142
143Arg value
144string(4) "http"
145
146Arg value 1
147string(11) "www.php.net"
148
149Arg value
150string(4) "http"
151
152Arg value 1
153string(11) "www.php.net"
154
155Arg value
156string(4) "http"
157
158Arg value
159Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
160NULL
161
162Arg value
163Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
164NULL
165
166Arg value string
167Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
168NULL
169
170Arg value string
171Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
172NULL
173Error: 4096 - Object of class stdClass could not be converted to string, %s(70)
174
175Arg value
176Error: 2 - parse_url() expects parameter 2 to be long, object given, %s(71)
177NULL
178
179Arg value
180string(4) "http"
181
182Arg value
183string(4) "http"
184Done