一些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_lsCC - 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") | 用于同时需要字符串和其长度的函数中 |