PHP扩展开发入门3------带参数的函数
2019独角兽企业重金招聘Python工程师标准>>>
原来笔记,就和撸代码一样,都很随性。后来看的代码和博客多了。发现太随性了,很难撸出高质量的代码,很难写出能看懂的笔记。
记笔记是一个梳理知识的过程,可以表达出自己对该知识的熟悉程度。
今天撸一段代码,记录一下PHP扩展中如何接收参数。
废话就不多说了,至于基础性的,比如如何创建扩展也不在这里说了,如何写接收参数的函数,只需要修改函数功能部分。昨天写的功能部分如下:
/*这里是功能这个函数不接收参数,只有返回值。*/PHP_FUNCTION(helloworld)
{int len;char *strg;len = spprintf(&strg, 0, "%.78s", "helloworld");RETURN_STRINGL(strg, len, 0);
}
这里实现接收参数计算a+b的值。首先接收参数的话需要在方法内添加如下代码
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {return;}
这里接收参数需要了解如下内容,这里接收一个整数型就需要写入一个'l',接收两个就写两个'll',以此类推,,然后在写入接收参数后赋值给指定的变量地址,一个参数就写一个变量,两个就写两个,三个就写三个一次类推。至于字符串和其他的参数,回来同一说明。
b Boolean
l Integer 整型
d Floating point 浮点型
s String 字符串
r Resource 资源
a Array 数组
o Object instance 对象
O Object instance of a specified type 特定类型的对象
z Non-specific zval 任意类型~
Z zval**类型
f 表示函数、方法名称,PHP5.1里貌似木有... .
修改后的代码如下
/*这里是功能这个函数不接收参数,只有返回值。*/PHP_FUNCTION(helloworld)
{int a;int b;if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {return;}int c;c=a+b;RETURN_LONG(c);
}
就这样,一个加法计算的函数就算完成了。接下来编译启动。然后在PHP代码中这样调用:
<?phpecho helloworld(1,3);
转载于:https://my.oschina.net/xavier007/blog/673163
PHP扩展开发入门3------带参数的函数相关推荐
- 【原创】PHP扩展开发入门
PHP扩展开发入门 作者:wf (360电商技术组) 在我们编写自己的第一个php扩展之前,先了解一下php的整体架构和运行机制. php的架构如图1所示.其中一个重要的就是SAPI(服务器端应用编程 ...
- python 装饰器 参数-python函数装饰器之带参数的函数和带参数的装饰器用法示例...
本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(fun ...
- 解决onclick事件调用其它带参数的函数方法无效的问题
不解以下现象: 原始版本代码:可跳过代码直接看解决方案部分.前面的文字是在解决问题时的思考. <body> <div id="div1"><form ...
- python装饰器函数-python函数装饰器之带参数的函数和带参数的装饰器用法示例
本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(fun ...
- js setTimeout 传递带参数的函数的2种方式
js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) {ale ...
- JS中setInterval、setTimeout不能传递带参数的函数的解决方法
setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数function te ...
- JavaScriptjQuery.带参数的函数
带参数的函数 创建带参数的函数 创建公式如下: function 函数名(参数1,参数2,...){ // 语句 } 同一节创建函数几乎一样,不同之处多了参数,参数可以是一个,也可以是多个. 参数在这 ...
- JavaScript调用cs中带参数的函数
这个问题就是在前台js中调用c#后台中带参数的函数 如: .cs: public string Method(string name) { return name; } javascript: v ...
- 微信公众平台开发(83) 生成带参数二维码
本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能. 一.场景二维码 为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码, ...
最新文章
- Linq to SQL 资源
- 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利
- HTML自动获取地址,网页中自动获取经纬度值并在地图中显示当前位置实例代码...
- Xcode7常见问题汇总
- mysql5.7.24免安装版配置_mysql5.7.20免安装版配置方法图文教程
- 每天进步一点点《ML - 高斯混合模型》
- Gridview 增加多个空行。
- 555定时器基本原理
- Selenium使用自带浏览器自动化
- 哈工大慕课 学生成绩管理系统V1.0~5.0
- libvirt Java 实现远程管理虚拟机
- arcgis将直线等分_如何快速定数等分一条线段?
- [转]内存与进程管理器
- 保险法中保险合同的常用解读
- 什么是流量网站流量的概念
- 转专业2017武汉大学计算机学,转专业申请计算机,武大学子圆梦伯克利
- 快速说唱教学第二期:反拍是什么?难吗?个人唱腔有多重要?
- 如何从 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7?
- 【c++基础】ifstream、istringstream的示例应用
- 0x0046E5FB 处(位于 基于多态职工管理系统.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000024 时发生访问冲突。