PHP扩展开发之计算两个数的和

143 篇文章 1 订阅

如果php扩展的开发环境建议看我上一篇文章
https://blog.csdn.net/chendongpu/article/details/119326485
这次默认php扩展环境已经安装好了
在ext目录执行命令

php ext_skel.php --ext hello

命令执行完毕后输出:

Copying config scripts... done
Copying sources... done
Copying tests... done
...

这表示已成功生成名为hello的PHP扩展的基本骨架,在当前目录生成了一个hello的文件夹,我们扩展的所有代码都将放在此目录下。目录下面会生成这几个文件:config.m4,config.w32,hello.c,php_hello.h tests.

编辑hello.c,找到这个方法

static const zend_function_entry hello_functions[] = {        
        PHP_FE(hello_test1,             arginfo_hello_test1)
        PHP_FE(hello_test2,             arginfo_hello_test2)
        PHP_FE_END
};

在最前一句前面加上这一行:

static const zend_function_entry hello_functions[] = {     
		PHP_FE(a,NULL)   
        PHP_FE(hello_test1,             arginfo_hello_test1)
        PHP_FE(hello_test2,             arginfo_hello_test2)
        PHP_FE_END
};

接下来是真正编写a函数实现的时候。
在文件末尾添加以下代码:

PHP_FUNCTION(a){
        int argc=ZEND_NUM_ARGS();
        long x,y;
        if(zend_parse_parameters(argc TSRMLS_CC,"ll",&x,&y)==FAILURE){
                RETURN_FALSE;
        }
        RETURN_LONG(x+y);
}

下面开始编译安装扩展

首先确保已经安装phpize,进入到扩展目录执行下面的命令:

[root@localhost hello]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

接着执行下面的命令


[root@localhost hello]# ./configure --with-php-config=/usr/local/php/bin/php-config
 
[root@localhost hello]# make && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/

看到最后这行表示扩展编译安装成功

打开扩展目录多了一个hello.so

[root@localhost hello]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/
foobar.so  hello.so  opcache.a  opcache.so

打开PHP的配置文件php.ini,在文件的末尾加入以下内容:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/hello.so

接下来我们来验证一番,在/root/php目录新建一个php文件填入以下内容:

<?php
 echo a(8,2);

接着我们运行这个PHP文件

[root@localhost hello]# php /root/php/hello.php
10

看到以上输出表示我们编写的扩展已经大功告成了。
如果你觉得这文章不错,请给我点个赞吧_!
如果有什么需要交流的欢迎私信!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值