【PHP扩展开发必备】在PHP扩展中通过C语言调用PHP函数与方法
2012-10-12 10:01
495 查看
这篇文章其实早就构思好了,一直未落于笔下,今天周天,想着不能再托了。
在扩展中调用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一下);
在扩展中调用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一下);
相关文章推荐
- 在PHP扩展中通过C语言调用PHP函数与方法
- 【学习Android NDK开发】native code通过JNI调用Java方法
- 手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法
- Java通过JNI调用C语言的方法
- 利用php调用C语言 扩展PHP的功能
- NET3.5中的扩展方法,DEMO直接通过IEnumerable<T>来自定义调用过滤方法
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- PHP7扩展开发-调用自定义函数,使用可变参
- 【学习Android NDK开发】native code通过JNI调用Java方法
- [李景山php] PHP扩展开发系列教程2-通过php.ini初始化你扩展的配置
- thinkphp调用PHPExcel扩展输出乱码解决方法
- php面向对象_get(),_set()的用法 (通过另外类 或者子类调用私有方法时)
- Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
- PHP通过反射机制调用可变参数方法
- 微信的API都是通过https调用实现的,分为post方法调用和get方法调用。不需要上传数据的采用get方法(使用IntraWeb开发)
- 【学习Android NDK开发】native code通过JNI调用Java方法
- iOS — 通过自定义framework,在调用的时候,里面的类扩展方法不能调用
- 为PHP开发C语言扩展
- windows下开发并编译PHP扩展的方法
- linux下通过eclipse开发用java调用c程序的方法