PHP内核API
来源:互联网 发布:2016年淘宝考试答案 编辑:程序博客网 时间:2024/05/18 00:16
重要的宏:
EG():是excutor_global的简写,这个宏可以用来访问符号表,函数,资源信息和常量
CG():是 compile_global的简写,用来访问核心全局变量。
PG():PHP全局变量。我们知道php.ini会映射一个或者多个PHP全局结构。举几个使用这个宏的例子:PG(register_globals),PG(safe_mode), PG(memory_limit)
FG():文件全局变量。大多数文件I/O或相关的全局变量的数据流都塞进标准扩展出口结构。
重要的数据类型:
Zend/zend.h中:
zvalue_value
zval
Zend/zend_hash.h中:
Bucket
HashTable
main/
Zend/
zend.c:
宏:CG(function_table)
Zeng/zeng_types.h :定义内核使用的基本数据类型
_zval_struct的别名zval就定义在这里
Zend/zend_hash.h: HashTable的API
创建并初始化一个HashTable:
int zend_hash_init( HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, zend_bool persistent);
为hashtable申请内存:ALLOC_HASHTABLE(ht)
添加&&修改
int zend_hash_add( HashTable *ht, //待操作的ht char *arKey, //索引,如"my_key" uint nKeyLen, //字符串索引的长度,如6 void **pData, //要插入的数据,注意它是void **类型的。int *p,i=1;p=&i,pData=&p;。 uint nDataSize, void *pDest //如果操作成功,则pDest=*pData;); int zend_hash_update( HashTable *ht, char *arKey, uint nKeyLen, void *pData, uint nDataSize, void **pDest); int zend_hash_index_update( HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest); int zend_hash_next_index_insert( HashTable *ht, void *pData, uint nDataSize, void **pDest);
查找:
int zend_hash_find(HashTable *ht, char *arKey, uint nKeyLength,void **pData);int zend_hash_index_find(HashTable *ht, ulong h, void **pData);
检测某个key是否存在:
int zend_hash_exists(HashTable *ht, char *arKey, uint nKeyLen);int zend_hash_index_exists(HashTable *ht, ulong h);
Zend/zend_hash.h:
EG(function_table) = CG(function_table);EG(class_table) = CG(class_table);
0 0
- PHP内核API
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核(十四) 返回函数值
- 内核API
- PHP内核
- php内核
- php 内核
- PHP架构-PHP内核
- Windows内核API HOOK
- 内核API之IoAllocateMdl
- 内核源码API
- 内核API之IoAllocateMdl
- 简单的Android服务端和客户端登录交互(客户端)
- svn服务配置和日常维护命令
- Maven的工程依赖和JAR包依赖
- Linux内核架构 Linux设备驱动 Linux电源管理 Linux音频子系统 Linux中断子系统 Linux时间管理系统 Linux输入子系统
- 文章推荐
- PHP内核API
- StarUML使用说明-指导手册
- 杨氏矩阵找第N大(小)的O(N)线性算法
- Leetcode_decode-ways
- 开源项目开发基本知识
- iReport专题学习之父报表 08
- 二叉树应用总结
- AsyncTask实例分析
- HBase架构