From 8112d1beba1b60e47f61607fe5d44646b31cf10c Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Wed, 9 May 2001 20:06:39 +0000 Subject: [PATCH] @- Added is_callable() function that can be used to find out whether @ its argument is a valid callable construct. (Andrei) --- ext/standard/basic_functions.c | 31 +++++++++++++++++++++++++++++++ ext/standard/basic_functions.h | 1 + 2 files changed, 32 insertions(+) diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 5374c24843..41c2d403f9 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -336,6 +336,7 @@ function_entry basic_functions[] = { PHP_FE(is_array, first_arg_allow_ref) PHP_FE(is_object, first_arg_allow_ref) PHP_FE(is_scalar, NULL) + PHP_FE(is_callable, third_argument_force_ref) PHP_FE(error_log, NULL) PHP_FE(call_user_func, NULL) @@ -2628,6 +2629,36 @@ PHP_FUNCTION(parse_ini_file) /* }}} */ +/* {{{ proto bool is_callable(mixed var [, bool syntax_only [, string callable_name ]]) */ +PHP_FUNCTION(is_callable) +{ + zval **var, **syntax_only, **callable_name; + char *name; + zend_bool retval; + zend_bool syntax = 0; + + if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 3 || + zend_get_parameters_ex(ZEND_NUM_ARGS(), &var, &syntax_only, &callable_name) == FAILURE) { + WRONG_PARAM_COUNT; + } + + if (ZEND_NUM_ARGS() > 1) { + convert_to_boolean_ex(syntax_only); + syntax = Z_BVAL_PP(syntax_only); + } + + if (ZEND_NUM_ARGS() > 2) { + retval = zend_is_callable(*var, syntax, &name); + zval_dtor(*callable_name); + ZVAL_STRING(*callable_name, name, 0); + } else + retval = zend_is_callable(*var, syntax, NULL); + + RETURN_BOOL(retval); +} +/* }}} */ + + /* * Local variables: * tab-width: 4 diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index 381ab04969..86e7756c74 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -77,6 +77,7 @@ PHP_FUNCTION(is_string); PHP_FUNCTION(is_array); PHP_FUNCTION(is_object); PHP_FUNCTION(is_scalar); +PHP_FUNCTION(is_callable); PHP_FUNCTION(error_log); -- 2.40.0