文档章节

PHP扩展开发入门3------>带参数的函数

字数 582
阅读 52
收藏 0

    原来笔记,就和撸代码一样,都很随性。后来看的代码和博客多了。发现太随性了,很难撸出高质量的代码,很难写出能看懂的笔记。

    记笔记是一个梳理知识的过程,可以表达出自己对该知识的熟悉程度。

    今天撸一段代码,记录一下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代码中这样调用:

<?php
    echo helloworld(1,3);

    

© 著作权归作者所有

纵使有花兼明月何堪无酒亦无人
粉丝 37
博文 45
码字总数 18489
作品 2
安阳
后端工程师
私信 提问
PHP开发入门1

PHP开发入门1 PHP开发入门2---->PHP扩展开发入门2 HELLO WORLD PHP扩展开发入门3------>带参数的函数 一直都想学习PHP扩展开发。每当看到那么多的C代码就会觉得无从下手。有一次也用也开发了...

纵使有花兼明月何堪无酒亦无人
2016/05/09
86
4
PHP扩展开发(一)--DEMO

入门 出现提示 根据提示进行操作其中第二步 到这个时候,我们就可以进行编译安装了 在php.ini里开启 t2.so文件 你的模块就加载好了查看php -m 可以发现t2模块已经被加载 编码(HELLO WORLD)...

o0无忧亦无怖
2016/03/31
47
0
一个作词家/cron-manager

cronManager 简介 cronManager是一个纯PHP实现的定时任务管理工具,api简单清晰,采用的是多进程模型,进程通信采用的是消息队列,任务监控也提供了简单的命令,方便易用 特性 多进程模型 支持守护...

一个作词家
2017/12/26
0
0
《PHP框架Laravel学习》系列分享专栏

《PHP框架Laravel学习》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201735.html 文章 Laravel教程:laravel 4安装及入门 Laravel4中文手册下载 Laravel配置教...

开元中国2015
2018/11/06
0
0
微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能

微信小程序在12月21日发布了新版本的开发工具,并在官网公布新增分享、模板消息、客服消息、扫一扫、带参数二维码功能。 有了分享功能,相信会给很多创业者带来了无限的可能性! 下面就来看看...

anda0109
2016/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot系列教程JPA之新增记录使用姿势

SpringBoot系列教程JPA之新增记录使用姿势 上一篇文章介绍了如何快速的搭建一个JPA的项目环境,并给出了一个简单的演示demo,接下来我们开始业务教程,也就是我们常说的CURD,接下来进入第一...

小灰灰Blog
26分钟前
2
0
大话文本检测经典模型:Pixel-Anchor

文本检测是深度学习中一项非常重要的应用,在前面的文章中已经介绍过了很多文本检测的方法,包括CTPN(详见文章:大话文本检测经典模型CTPN)、SegLink(详见文章:大话文本检测经典模型Seg...

雪饼
29分钟前
0
0
手把手教你写一个RPC

1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)——远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC...

我最喜欢三大框架
38分钟前
0
0
系统监控-SpringBoot四大神器之Actuator

1. 为什么要使用Actuator来监控SpringBoot项目? 首先之前博客提到过使用JDK自带的JVM监控工具、Psi-Probe Tomcat监控工具以及Javamelody,也提到了Psi-Probe的强大,但是Psi-Probe针对jar包...

秋日芒草
39分钟前
5
0
pip通过setup.py和git仓库安装package

安装setup.py配置文件中的包 进入到setup.py所在目录 pip install -e . 1 安装git仓库中的包 pip install git+git clone 仓库地址.git 1 python代码打包为whl格式 python setup.py bdist_wh...

dillonxiao
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部