PHPAPI函数调用
我们经常需要调用php api 提供的标准函数,比如 array_merge 如何调用呢,首先需要引入函数声明,然后调用函数,一般函数前面都会有一个 "php_"
----php_swoole.h----
extern PHPAPI int php_array_merge(HashTable *dest, HashTable *src);
extern PHPAPI int php_var_dump(zval* val);
----test.c----
PHP_METHOD(php_api_call)
{
zval *dest, *src;
...
php_array_merge(Z_ARRVAL_P(dest), Z_ARRVAL_P(src));
php_var_dump(dest);
}
类型转换函数
转整数 convert_to_long(zval * val)
转布尔 convert_to_boolean(zval * val)
转字符串 convert_to_string(zval * val)
转浮点型 convert_to_double(zval * val)
zval *tmp;
...
convert_to_long(tmp);
long value = Z_LVAL_P(tmp);
convert_to_boolean(tmp);
uint8_t mask = (int) Z_BVAL_P(tmp);
convert_to_string(tmp);
if (strcmp(Z_STRVAL_P(tmp), "Upgrade") == 0) // is upgrade
{
php_printf("upgrade");
}
convert_to_double(tmp);
double timeout = (double) Z_DVAL_P(tmp);