Zend API:深入 PHP 内核(十四) 返回函数值
来源:互联网 发布:怎么用c语言表白 编辑:程序博客网 时间:2024/04/30 00:30
http://yanbin.org/archive/php-manual-zh-returning-values.html
关于扩展内函数到 PHP 脚本的返回值我们前面谈得比较少,这一节我们就来详细说一下。任何函数的返回值都是通过一个名为 return_value 的变量传递的。这个变量同时也是函数中的一个参数。这个参数总是包含有一个事先申请好空间的 zval 容器,因此你可以直接访问其成员并对其进行修改而无需先对 return_value 执行一下 MAKE_STD_ZVAL 宏指令。
为了能够更方便从函数中返回结果,也为了省却直接访问 zval 容器内部结构的麻烦,ZEND 提供了一大套宏命令来完成相关的这些操作。这些宏命令会自动设置好类型和数值。“表3.14 从函数直接返回值的宏”和“表3.15 设置函数返回值的宏”列出了这些宏和对应的说明。
注意:使用“表3.14 从函数直接返回值的宏”会自动携带结果从当前函数返回。而使用“表3.15 设置函数返回值的宏”则只是设置了一下函数返回值,并不会马上返回。
表3.14 从函数直接返回值的宏
宏说明RETURN_RESOURCE(resource)
返回一个资源。RETURN_BOOL(bool)
返回一个布尔值。RETURN_NULL()
返回一个空值。RETURN_LONG(long)
返回一个长整数。RETURN_DOUBLE(double)
返回一个双精度浮点数。RETURN_STRING(string, duplicate)
返回一个字符串。duplicate 表示这个字符是否使用estrdup() 进行复制。RETURN_STRINGL(string, length, duplicate)
返回一个定长的字符串。其余跟 RETURN_STRING 相同。这个宏速度更快而且是二进制安全的。RETURN_EMPTY_STRING()
返回一个空字符串。RETURN_FALSE
返回一个布尔值假。RETURN_TRUE
返回一个布尔值真。表3.15 设置函数返回值的宏
宏说明RETVAL_RESOURCE(resource)
设定返回值为指定的一个资源。RETVAL_BOOL(bool)
设定返回值为指定的一个布尔值。RETVAL_NULL
设定返回值为空值RETVAL_LONG(long)
设定返回值为指定的一个长整数。RETVAL_DOUBLE(double)
设定返回值为指定的一个双精度浮点数。RETVAL_STRING(string, duplicate)
设定返回值为指定的一个字符串,duplicate 含义同RETURN_STRING。RETVAL_STRINGL(string, length, duplicate)
设定返回值为指定的一个定长的字符串。其余跟RETVAL_STRING 相同。这个宏速度更快而且是二进制安全的。RETVAL_EMPTY_STRING
设定返回值为空字符串。RETVAL_FALSE
设定返回值为布尔值假。RETVAL_TRUE
设定返回值为布尔值真。如果需要返回的是像数组和对象这样的复杂类型的数据,那就需要先调用 array_init() 和object_init(),也可以使用相应的 hash 函数直接操作 return_value。由于这些类型主要是由一些杂七杂八的东西构成,所以对它们就没有了相应的宏。
- Zend API:深入 PHP 内核(十四) 返回函数值
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- Zend API:深入 PHP 内核
- [李景山php] 深入理解PHP内核[读书笔记]--第四章:函数的实现 --函数的返回值
- 深入理解PHP内核(一):生命周期和zend引擎
- 深入理解php内核:介绍PHP和Zend
- PHP内核--Zend引擎
- PHP ZEND API整理
- php zend api【第一次】
- 【深入PHP 面向对象】读书笔记(十四)
- 原:PHP内核研究 函数的返回值
- 自己动手用 C 扩展 PHP(三)- 重要ZEND API函数
- 二十四、返回函数
- hive 使用streaming 的map 脚本来处理数据
- embed遇到的问题
- 关于代码重载(java)
- Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
- Linux 文件映射mmap,Bus Error
- Zend API:深入 PHP 内核(十四) 返回函数值
- linux下java开启80端口无效分析和解决方案
- SQLiteOpenHelper 创建,更新,打开
- 线程如何关闭测试
- 安卓自测试题——第七期
- 正式生产库,配置双节点的RAC + 单实例的 DATAGUARD
- 利用Log4Net将日志插入至oracle数据库!
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
- Entity Framework 简单查询