(Win XP Pro, PHP 5 RC 1, Visual C++ .NET)
Hi,
I'm trying to create an extension which calls a function defined in a PHP
script. The name of this function is "someFunction".
My code is here:
zval **params[2], *func_name, *retval_ptr;
CLS_FETCH();
ZVAL_STRING(func_name, "someFunction", 1);
ZVAL_LONG(*params[0], 32);
ZVAL_STRING(*params[1], "meters", 1);
if (call_user_function(CG(function_table), NULL, func_name,&retval_ptr,
2,params) == SUCCESS) {
zval_ptr_dtor(&retval_ptr);
}
When I compile this I get an error saying
c:\Documents and Settings\Bill
Zeller\Desktop\testing\phui\phui_ext\phui_ext\phui_ext.cpp(121): error
C2198: 'call_user_function' : too few actual parameters
I don't know why this happens, because I'm using the arguments as described
in the definition on line 298 of zend_API.h:
ZEND_API int call_user_function(HashTable *function_table, zval **object_pp,
zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[]
TSRMLS_DC);
Thanks for your help,
Best Regards,
Bill Zeller
Hello Bill,
Thursday, April 29, 2004, 7:26:49 AM, you wrote:
(Win XP Pro, PHP 5 RC 1, Visual C++ .NET)
Hi,
I'm trying to create an extension which calls a function defined in a PHP
script. The name of this function is "someFunction".
My code is here:
zval **params[2], *func_name, *retval_ptr;
It must be zval *params[2] (only one *)
And func_name (not *)
CLS_FETCH();
what does it do? I hope it does the following which is needed:
fetch a zval into zval params[0] and zval params[1]
ZVAL_STRING(func_name, "someFunction", 1);
change that to ZVAL_STRING(&func_name, 'someFunc', 0)
(notice & and 0 above)
and don't free func_name, that's unneeded overhead after these changes
ZVAL_LONG(*params[0], 32);
ZVAL_STRING(*params[1], "meters", 1);
if (call_user_function(CG(function_table), NULL, func_name,&retval_ptr,
here you need &func_name, too
2,params) == SUCCESS) {
zval_ptr_dtor(&retval_ptr);
}
When I compile this I get an error saying
c:\Documents and Settings\Bill
Zeller\Desktop\testing\phui\phui_ext\phui_ext\phui_ext.cpp(121): error
C2198: 'call_user_function' : too few actual parameters
I don't know why this happens, because I'm using the arguments as described
in the definition on line 298 of zend_API.h:
ZEND_API int call_user_function(HashTable *function_table, zval **object_pp,
zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[]
TSRMLS_DC);
Thanks for your help,
Best Regards,
Bill Zeller
--
Best regards,
Marcus mailto:helly@php.net
Bill Zeller wrote:
if (call_user_function(CG(function_table), NULL, func_name,&retval_ptr,
2,params) == SUCCESS) {ZEND_API int call_user_function(HashTable *function_table, zval **object_pp,
zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[]
TSRMLS_DC);
Without having a lot of experience and without trying it it looks like
TSRMLS_CC is missing in your function call.
- Chris