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