如果zval是一个可调用对象,我如何在扩展c代码中运行它?
或者如何将azval转换为azend_fcall_info

最佳答案

在搜索zend_is_callable并深入到php src代码之后,我知道如何调用可调用的zval:

zval ret;

zval* params[] = { param }; // param is zval* too

if (SUCCESS == call_user_function(CG(function_table), NULL, callable, &retval, 1, params TSRMLS_CC)) {
    // callable is a zval*
    // you can do something with the retval now
}

关于c - 如何在php extension dev中调用`callable` zval?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12553589/

10-12 04:43