【php7扩展开发五】函数调用

本文介绍了在PHP7扩展开发中如何调用用户自定义函数及内部函数。通过示例展示了调用函数的API使用,包括参数解释,以及如何调用成员方法。示例中演示了调用一个将参数加100的函数,并指出`call_user_function()`函数不仅可以调用PHP脚本中的函数,还能调用内核和扩展注册的函数,如`array_merge()`。
摘要由CSDN通过智能技术生成

实际应用中,扩展可能需要调用用户自定义的函数或者其他扩展定义的内部函数,PHP提供的函数调用API的使用:

ZEND_API int call_user_function(HashTable *function_table, zval *object,zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[
]);

各参数的含义:

  • __function_table:__ 函数符号表,普通函数是EG(function_table),如果是成员方法则是zend_class_entry.function_table
  • object: 调用成员方法时的对象
  • __function_name:__ 调用的函数名称
  • __retval_ptr:__ 函数返回值地址
  • __param_count:__ 参数数量
  • params: 参数数组

从接口的定义看其使用还是很简单的,不需要我们关心执行过程中各阶段复杂的操作。下面从一个具体的例子看下其使用:

(1)在PHP中定义了一个普通的函数,将参数$i加上100后返回:

function mySum($i){
    return $i+100;
}


(2)接下来在扩展中调用这个函数:

PHP_FUNCTION(my_func_2)
{
    zend_long i;
    zval call_func_name, call_func_ret, call_func_params[1];
    uint32_t call_func_param_cnt = 1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值