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