dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7078|回复: 105

PHP扩展开发入门

  [复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10734
    发表于 2018-12-26 23:28:10 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    写一个最简单的将字符串全部变成大写的函数:
    [PHP] 纯文本查看 复制代码
    <?php
        function my_toupper($str) {
            return strtoupper($str);
        }
        
        echo my_toupper('demo');
    ?>

    现在我们开发一个php扩展,实现my_toupper的功能。

    Step1:
        PHP提供了一个扩展框架生成器:ext_skel,这个工具在php源码的ext目录(我的是/usr/local/src/php-5.6.17/ext/)下。首先我们在php源码的ext目录下创建一个orlion.skel文件,文件内容为:
    1. string my_toupper(string str)
    复制代码
     这个文件就是要告诉ext_skel我们的扩展里有my_toupper这个函数,接下来执行:
    1. ./ext_skel --extname=orlion --proto=orlion.skel
    复制代码

       

        这一步会在当前目录下创建一个文件夹orlion。目录结构这样的:
       

        这时候这个扩展的框架就搭建好了。

    Step2:
        修改orlion目录下的config.m4,将这个文件第10、11、12行的dnl去掉:
       就是将
         

        改为:
       

       
    Step3:
        接下来就是要实现我们的功能了,打开orlion.c,然后找到函数PHP_FUNCTION(my_toupper),修改为如下:
       

        然后编译扩展,依次运行:
    1. $ /usr/local/php/bin/phpize$ ./configure --with-php-config=/usr/local/php/bin/php-config$ make
    复制代码

    Step4:
        将扩展添加到php中,首先将我们扩展中的orlion/mudules/orlion.so拷贝到php的扩展目录:
       

        然后修改配置php.ini在文件最后边加上"extension=orlion.so"然后重启php-fpm。

    Step5:
        写个test.php文件测试一下:
    [PHP] 纯文本查看 复制代码
    <?php    
       var_dump(my_toupper('abc'));
    ?>


        运行一下可以看到输出了ABC,success!



    回复

    使用道具 举报

    该用户从未签到

    35

    主题

    7850

    帖子

    1098

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1098

    发表于 2018-12-28 12:46:26 | 显示全部楼层
    过来看看的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27

    主题

    7861

    帖子

    1048

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1048

    发表于 2018-12-29 00:05:42 | 显示全部楼层
    学习了,谢谢分享、、、
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18

    主题

    7942

    帖子

    960

    积分

    荣誉会员

    积分
    960

    发表于 2018-12-30 23:53:43 | 显示全部楼层
    么有分,谁能送我点积分啊::>_<::
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    7844

    帖子

    984

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    984

    发表于 2019-1-3 13:30:11 | 显示全部楼层
    谢谢楼主,共同发展
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    7817

    帖子

    974

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    974

    发表于 2019-1-4 02:31:01 | 显示全部楼层
    支持一下:lol
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40

    主题

    7912

    帖子

    1004

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1004

    发表于 2019-1-5 14:07:06 | 显示全部楼层
    路过,学习下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    7712

    帖子

    941

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    941

    发表于 2019-1-8 10:44:17 | 显示全部楼层
    不错不错,楼主您辛苦了。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    94

    主题

    8057

    帖子

    1006

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1006

    发表于 2019-1-8 19:33:50 | 显示全部楼层
    不知该说些什么。。。。。。就是谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33

    主题

    7990

    帖子

    1018

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1018

    发表于 2019-1-9 23:33:24 | 显示全部楼层
    学习了,不错,讲的太有道理了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-12-23 22:53 , Processed in 0.147881 second(s), 42 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表