diff --git a/ext/standard/tests/general_functions/is_callable_anon.phpt b/ext/standard/tests/general_functions/is_callable_anon.phpt new file mode 100644 index 00000000000..635f2a04ab2 --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_anon.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test is_callable() function : usage variations - anonymous class method +--FILE-- + +--EXPECT-- +nice diff --git a/ext/standard/tests/general_functions/is_callable_variation1.phpt b/ext/standard/tests/general_functions/is_callable_variation1.phpt index cfc14bbd9c6..0a4609b6d2e 100644 --- a/ext/standard/tests/general_functions/is_callable_variation1.phpt +++ b/ext/standard/tests/general_functions/is_callable_variation1.phpt @@ -21,10 +21,10 @@ function check_iscallable( $functions ) { var_dump( is_callable($func) ); //given only $var argument var_dump( is_callable($func, TRUE) ); //given $var and $syntax argument var_dump( is_callable($func, TRUE, $callable_name) ); - echo $callable_name, "\n"; + echo json_encode($callable_name) . "\n"; var_dump( is_callable($func, FALSE) ); //given $var and $syntax argument var_dump( is_callable($func, FALSE, $callable_name) ); - echo $callable_name, "\n"; + echo json_encode($callable_name) . "\n"; $counter++; } } @@ -65,144 +65,144 @@ check_iscallable($undef_functions); bool(false) bool(true) bool(true) - +"" bool(false) bool(false) - +"" -- Iteration 2 -- bool(false) bool(true) bool(true) - +"" bool(false) bool(false) - +"" -- Iteration 3 -- bool(false) bool(true) bool(true) - +" " bool(false) bool(false) - +" " -- Iteration 4 -- bool(false) bool(true) bool(true) - +" " bool(false) bool(false) - +" " -- Iteration 5 -- bool(false) bool(true) bool(true) -12356 +"12356" bool(false) bool(false) -12356 +"12356" -- Iteration 6 -- bool(false) bool(true) bool(true) - +"\u0000" bool(false) bool(false) - +"\u0000" -- Iteration 7 -- bool(false) bool(true) bool(true) -\0 +"\\0" bool(false) bool(false) -\0 +"\\0" -- Iteration 8 -- bool(false) bool(true) bool(true) -hello world +"hello world" bool(false) bool(false) -hello world +"hello world" -- Iteration 9 -- bool(false) bool(true) bool(true) -hello world +"hello world" bool(false) bool(false) -hello world +"hello world" -- Iteration 10 -- bool(false) bool(true) bool(true) -welcome +"welcome\u0000" bool(false) bool(false) -welcome +"welcome\u0000" -- Iteration 11 -- bool(false) bool(true) bool(true) -welcome\0 +"welcome\\0" bool(false) bool(false) -welcome\0 +"welcome\\0" -- Iteration 12 -- bool(false) bool(true) bool(true) -==%%%***$$$@@@!! +"==%%%***$$$@@@!!" bool(false) bool(false) -==%%%***$$$@@@!! +"==%%%***$$$@@@!!" -- Iteration 13 -- bool(false) bool(true) bool(true) -false +"false" bool(false) bool(false) -false +"false" -- Iteration 14 -- bool(false) bool(true) bool(true) -8 +"8" bool(false) bool(false) -8 +"8" -- Iteration 15 -- bool(false) bool(true) bool(true) -\t +"\\t" bool(false) bool(false) -\t +"\\t" -- Iteration 16 -- bool(false) bool(true) bool(true) -\007 +"\\007" bool(false) bool(false) -\007 +"\\007" -- Iteration 17 -- bool(false) bool(true) bool(true) -123 +"123" bool(false) bool(false) -123 +"123" -- Iteration 18 -- bool(false) bool(true) bool(true) -echo() +"echo()" bool(false) bool(false) -echo() -===DONE=== \ No newline at end of file +"echo()" +===DONE=== diff --git a/ext/standard/type.c b/ext/standard/type.c index 9e5c154f237..a8000504628 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -409,13 +409,7 @@ PHP_FUNCTION(is_callable) if (ZEND_NUM_ARGS() > 2) { retval = zend_is_callable_ex(var, NULL, check_flags, &name, NULL, &error); zval_dtor(callable_name); - //??? is it necessary to be consistent with old PHP ("\0" support) - if (UNEXPECTED(ZSTR_LEN(name) != strlen(ZSTR_VAL(name)))) { - ZVAL_STRINGL(callable_name, ZSTR_VAL(name), strlen(ZSTR_VAL(name))); - zend_string_release(name); - } else { - ZVAL_STR(callable_name, name); - } + ZVAL_STR(callable_name, name); } else { retval = zend_is_callable_ex(var, NULL, check_flags, NULL, NULL, &error); }