【PHP扩展开发必备】在PHP扩展中通过C语言调用PHP函数与方法

本文介绍了一个实用函数——walu_call_user_function,用于在扩展中便捷地调用PHP函数或方法。该函数简化了扩展开发流程,并详细解释了其参数及使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章其实早就构思好了,一直未落于笔下,今天周天,想着不能再托了。

在扩展中调用PHP函数是一件很繁琐的事情,这里给大家带来一个现成的函数,可以极大的方便大家在扩展中调用php函数与方法。

函数原型:int walu_call_user_function(zval** retval, zval* obj, char* function_name, char* paras, …);
调用成功返回1,失败返回0.

各个参数的说明:

  • retval,zval**类型的,代表返回值。如果你需要返回值,请传递一个zval**类型的变量,不需要返回值可以传递NULL。
  • obj,对象实例对应的zval*,如果是PHP函数此处传递NULL。
  • function_name,字符串,内容为函数或者方法的名称。
  • paras,字符串,由一系列转换字符组成,转换字符由:s,b,z,n组成。


其它参数,根据paras里的转换字符,给出具体的数据,每个转换字符对应的数据如下:

  • s  :  char* str, int len。
  • b  :  int bool, 1代表true,0代表false。
  • n  :  代表NULL,它不需要提供数据。
  • z  :  zval *val, 一般是对象、数组、资源。
  • d  : double num;

调用时候需要注意的几点:

对于z型参数,调用过程中walu_call_user_function本身不会修改、释放它。
对于参数中的retval,如果不是NULL,调用者使用完成后不要忘记zval_ptr_dtor(retval一下);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值