一些php扩展的资料整理
Thread-Safe 宏
TSRM
Thread-Safe Resource Manager
线程安全资源管理
ZTS
Zend Thread Safety
Zend 线程安全
tsrm_ls
TSRM local storage
线程安全资源管理 本地存储
TSRMLS_??
TSRMLS_C tsrm_ls
TSRMLS_D void ***tsrm_ls
TSRMLS_CC , tsrm_ls
TSRMLS_DC , void ***tsrm_ls
CC - call with comma
前置逗号的调用
C - call
调用
DC - declaration with comma
前置逗号的声明
D - declaration
声明
zend_parse_parameters
类型符号
类型字符 | php参数类型 | c类型 |
---|---|---|
l | long | long |
d | double | double |
s | string | char* / int |
b | boolean | zend_bool |
r | resource | zval* |
a | array | zval* |
z | zval | zval* |
Z | zval | zval** |
f | function | function |
o/O | class | zval, zend_class_entry |
控制字符
控制字符 | 作用 |
---|---|
| | 它之前的参数都是必须的,之后的都是非必须的,也就是有默认值的。 |
! | 如果接收了一个PHP语言里的null变量,则直接把其转成C语言里的NULL,而不是封装成IS_NULL类型的zval。 |
/ | 如果传递过来的变量与别的变量共用一个zval,而且不是引用,则进行强制分离,新的zval的is_ref__gc==0, and refcount__gc==1. |
返回值
返回函数 |
---|
RETURN_RESOURCE(resource) |
RETURN_BOOL(bool) |
RETURN_NULL() |
RETURN_LONG(long) |
RETURN_DOUBLE(double) |
RETURN_STRING(string, duplicate) |
RETURN_STRINGL(string, length, duplicate) |
RETURN_EMPTY_STRING() |
RETURN_FALSE() |
RETURN_TRUE() |
helpers
helper | expanded | 解释 |
---|---|---|
ZEND_FE_END() | {NULL, NULL, NULL} | 用于zend_function_entry的最后一行 |
ZEND_STRL("str") | "str", strlen("str") | 用于同时需要字符串和其长度的函数中 |