1--TEST--
2Test is_callable() function : usage variations - undefined functions
3--FILE--
4<?php
5function check_iscallable( $functions ) {
6  $counter = 1;
7  foreach($functions as $func) {
8    echo "-- Iteration  $counter --\n";
9    var_dump( is_callable($func) );  //given only $var argument
10    var_dump( is_callable($func, TRUE) );  //given $var and $syntax argument
11    var_dump( is_callable($func, TRUE, $callable_name) );
12    echo json_encode($callable_name) . "\n";
13    var_dump( is_callable($func, FALSE) );  //given $var and $syntax argument
14    var_dump( is_callable($func, FALSE, $callable_name) );
15    echo json_encode($callable_name) . "\n";
16    $counter++;
17  }
18}
19
20echo "\n*** Testing is_callable() on undefined functions ***\n";
21$undef_functions = array (
22  "",  //empty string
23  '',
24  " ",  //string with a space
25  ' ',
26  "12356",
27  "\0",
28  '\0',
29  "hello world",
30  'hello world',
31  "welcome\0",
32  'welcome\0',
33  "==%%%***$$$@@@!!",
34  "false",
35  "\070",
36  '\t',  //escape character
37  '\007',
38  '123',
39  'echo()'
40);
41
42/* use check_iscallable() to check whether given string is valid function name
43 * expected: true with $syntax = TRUE
44 *           false with $syntax = FALSE
45 */
46check_iscallable($undef_functions);
47
48?>
49--EXPECT--
50*** Testing is_callable() on undefined functions ***
51-- Iteration  1 --
52bool(false)
53bool(true)
54bool(true)
55""
56bool(false)
57bool(false)
58""
59-- Iteration  2 --
60bool(false)
61bool(true)
62bool(true)
63""
64bool(false)
65bool(false)
66""
67-- Iteration  3 --
68bool(false)
69bool(true)
70bool(true)
71" "
72bool(false)
73bool(false)
74" "
75-- Iteration  4 --
76bool(false)
77bool(true)
78bool(true)
79" "
80bool(false)
81bool(false)
82" "
83-- Iteration  5 --
84bool(false)
85bool(true)
86bool(true)
87"12356"
88bool(false)
89bool(false)
90"12356"
91-- Iteration  6 --
92bool(false)
93bool(true)
94bool(true)
95"\u0000"
96bool(false)
97bool(false)
98"\u0000"
99-- Iteration  7 --
100bool(false)
101bool(true)
102bool(true)
103"\\0"
104bool(false)
105bool(false)
106"\\0"
107-- Iteration  8 --
108bool(false)
109bool(true)
110bool(true)
111"hello world"
112bool(false)
113bool(false)
114"hello world"
115-- Iteration  9 --
116bool(false)
117bool(true)
118bool(true)
119"hello world"
120bool(false)
121bool(false)
122"hello world"
123-- Iteration  10 --
124bool(false)
125bool(true)
126bool(true)
127"welcome\u0000"
128bool(false)
129bool(false)
130"welcome\u0000"
131-- Iteration  11 --
132bool(false)
133bool(true)
134bool(true)
135"welcome\\0"
136bool(false)
137bool(false)
138"welcome\\0"
139-- Iteration  12 --
140bool(false)
141bool(true)
142bool(true)
143"==%%%***$$$@@@!!"
144bool(false)
145bool(false)
146"==%%%***$$$@@@!!"
147-- Iteration  13 --
148bool(false)
149bool(true)
150bool(true)
151"false"
152bool(false)
153bool(false)
154"false"
155-- Iteration  14 --
156bool(false)
157bool(true)
158bool(true)
159"8"
160bool(false)
161bool(false)
162"8"
163-- Iteration  15 --
164bool(false)
165bool(true)
166bool(true)
167"\\t"
168bool(false)
169bool(false)
170"\\t"
171-- Iteration  16 --
172bool(false)
173bool(true)
174bool(true)
175"\\007"
176bool(false)
177bool(false)
178"\\007"
179-- Iteration  17 --
180bool(false)
181bool(true)
182bool(true)
183"123"
184bool(false)
185bool(false)
186"123"
187-- Iteration  18 --
188bool(false)
189bool(true)
190bool(true)
191"echo()"
192bool(false)
193bool(false)
194"echo()"
195