diff options
| -rw-r--r-- | ext/standard/basic_functions.c | 31 | ||||
| -rw-r--r-- | ext/standard/basic_functions.h | 1 | 
2 files changed, 32 insertions, 0 deletions
| 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); | 
