Hello,
I found this zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache
*fci_cache TSRMLS_DC) and many examples using it. I can successfully call
this and it will call the user function for me. I'm interested in learning
how to not only call the function, but also pass arguments to that function.
Can anyone please point me to where I can see how that's done?
thx
Hi:
you can refer to zif_call_user_func, which could be find at
http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714
thanks
On Fri, Apr 27, 2012 at 12:43 PM, Yader Hernandez
yader.hernandez@gmail.com wrote:
Hello,
I found this zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache
*fci_cache TSRMLS_DC) and many examples using it. I can successfully call
this and it will call the user function for me. I'm interested in learning
how to not only call the function, but also pass arguments to that function.Can anyone please point me to where I can see how that's done?
thx
--
Laruence Xinchen Hui
http://www.laruence.com/
You might be interested by zend_call_method_with_[XXX]_params() as
well http://lxr.php.net/xref/PHP_5_3/Zend/zend_interfaces.h
Julien.Pauli
Hi:
you can refer to zif_call_user_func, which could be find at
http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714thanks
On Fri, Apr 27, 2012 at 12:43 PM, Yader Hernandez
yader.hernandez@gmail.com wrote:Hello,
I found this zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache
*fci_cache TSRMLS_DC) and many examples using it. I can successfully call
this and it will call the user function for me. I'm interested in learning
how to not only call the function, but also pass arguments to that function.Can anyone please point me to where I can see how that's done?
thx
--
Laruence Xinchen Hui
http://www.laruence.com/
You might be interested by zend_call_method_with_[XXX]_params() as
well http://lxr.php.net/xref/PHP_5_3/Zend/zend_interfaces.hJulien.Pauli
Hi:
you can refer to zif_call_user_func, which could be find athttp://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714
thanks
On Fri, Apr 27, 2012 at 12:43 PM, Yader Hernandez
yader.hernandez@gmail.com wrote:Hello,
I found this zend_call_function(zend_fcall_info *fci,
zend_fcall_info_cache
*fci_cache TSRMLS_DC) and many examples using it. I can successfully
call
this and it will call the user function for me. I'm interested in
learning
how to not only call the function, but also pass arguments to that
function.Can anyone please point me to where I can see how that's done?
thx
--
Laruence Xinchen Hui
http://www.laruence.com/--
I had a look at
http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714
and
I don't understand how it's passing the arguments into the closure given by
the user.
I can successfully call the closure given, but passing arguments into the
closure is something I'm not clear on.
Can someone please shed some light?
On Sat, Apr 28, 2012 at 11:49 PM, Yader Hernandez
yader.hernandez@gmail.com wrote:
I had a look at
http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714
and
I don't understand how it's passing the arguments into the closure given by
the user.I can successfully call the closure given, but passing arguments into the
closure is something I'm not clear on.Can someone please shed some light?
Look at the zend_parse_parameters call. It fetches the params into
fci.params and their number into fci.param_count.
zend_fcall_info.params is defined as zval***, so it's basically an
array of zval**. So you simply have to create one with your arguments
:)
Hope that helps,
Nikita
On Sat, Apr 28, 2012 at 3:15 PM, Nikita Popov nikita.ppv@googlemail.comwrote:
On Sat, Apr 28, 2012 at 11:49 PM, Yader Hernandez
yader.hernandez@gmail.com wrote:I had a look at
http://lxr.php.net/opengrok/xref/PHP_5_4/ext/standard/basic_functions.c#4714
and
I don't understand how it's passing the arguments into the closure given
by
the user.I can successfully call the closure given, but passing arguments into the
closure is something I'm not clear on.Can someone please shed some light?
Look at the zend_parse_parameters call. It fetches the params into
fci.params and their number into fci.param_count.zend_fcall_info.params is defined as zval***, so it's basically an
array of zval**. So you simply have to create one with your arguments
:)Hope that helps,
Nikita
Ah! Great it works now. Thanks!
I'm assuming that return_value in this case is being used as whatever the
closure returned ?
ie. function ($element) { return false; }
then that means I can do Z_LVAL_P(return_value) /* 0 */, correct ?