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===