首页
学习
活动
专区
圈层
工具
发布

手把手撸PHP扩展 0x05: 协程创建(一)

首先,我们需要确定一下这个接口的参数是什么,很显然,是一个PHP函数: #include "study_coroutine.h" ZEND_BEGIN_ARG_INFO_EX(arginfo_study_coroutine_create...ZEND_END_ARG_INFO展开如下: #define ZEND_END_ARG_INFO() }; 因此,我们对这个参数声明展开后,会得到如下内容: ZEND_BEGIN_ARG_INFO_EX(arginfo_study_coroutine_create...) ZEND_ARG_CALLABLE_INFO(0, func, 0) ZEND_END_ARG_INFO() static const zend_internal_arg_info arginfo_study_coroutine_create..., 0, 0, 1) 中写下了单词arginfo、study_coroutine_create,似乎一定是要这样写,但是,我们把ZEND_BEGIN_ARG_INFO_EX宏展开之后会发现,arginfo_study_coroutine_create...所以这里很明显,我们必须填写arginfo_study_coroutine_create,也就是我们参数展开后定义的那个变量。 num_args是接口方法的参数个数。

62410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php扩展开发一:hello world

    "Hello %s", var);//格式化字符串    RETURN_STR(retval);//返回值 } /* }}}*/ 但这样是不够的,我们还需要定义一个函数的参数声明: /* {{{ arginfo... */ ZEND_BEGIN_ARG_INFO(arginfo_tioncico_test1, 0)//函数名,参数是否为引用类型,0代表不是 ZEND_END_ARG_INFO()//结束函数参数信息声明...ZEND_BEGIN_ARG_INFO(arginfo_tioncico_test2, 0)//函数名,参数是否为引用类型,0代表不是    ZEND_ARG_INFO(0, str)//声明一个普通参数...tioncico_functions[]  */ static const zend_function_entry tioncico_functions[] = {    PHP_FE(tioncico_test1,    arginfo_tioncico_test1...)    PHP_FE(tioncico_test2,    arginfo_tioncico_test2)    PHP_FE_END }; 这时候,一个扩展的2个函数已经编写完成了 重新编译运行,

    1.1K10
    领券