PHP扩展开发(一)DEMO
##入门 1.下载PHP源码(我的版本是5.6.13) 2.常规编译安装 [可以看我以前的blog](http://my.oschina.net/lwl1989/blog/511295) 3.使用ext_skel ``` cd phpsrc/ext ./ext_skel --extname=name // name 是指你要写得扩展的名字,下文我们都是t2 ```出现提示```1. $ cd ..2. $ vi ext/t2/config.m43. $ ./buildconf4. $ ./configure --[with|enable]-t25. $ make6. $ ./sapi/cli/php -f ext/t2/t2.php7. $ vi ext/t2/t2.c8. $ make```根据提示进行操作其中第二步 我们应该修改config.m4的10、11、12行 去除掉dnl[我的理解是ZEND一种注释的方案]到这个时候,我们就可以进行编译安装了```/usr/local/php/bin/phpize //执行phpize./configure --with-php-config=/usr/local/php/bin/php-configmake make install```在php.ini里开启 t2.so文件 你的模块就加载好了查看php -m 可以发现t2模块已经被加载##编码(HELLO WORLD)但是目前而言,这个扩展是没有任何功能的。于是我们需要加入新的功能。这时,我们可以对t2.c文件进行编写(当然你也可以写在别的文件里,在t2.c里面include)```PHP_FUNCTION(t2_hello){ printf("hello world\n");}```这样重新编译后,运行 php -r "t2_hello();"是不行的,为什么呢?因为我们没有将t2_hello载入到函数列表原型:```typedef struct _zend_function_entry { char *fname; void (*handler)(INTERNAL_FUNCTION_PARAMETERS); unsigned char *func_arg_types;} zend_function_entry;```> 参数 描述fname 提供给PHP中调用的函数名。例如mysql_connecthandler 负责处理这个接口函数的指针。func_arg_types 标记参数。可以设置为NULL我们在生成的中加入一行```static const zend_function_entry t2_functions[] = { //在这加入 {NULL, NULL, NULL}}``` PHP_FE(t2_hello, NULL)> 注意,zend_function_entry的最后一项一定是{NULL, NULL, NULL},Zend引擎就是靠这个判断导出函数列表是否完毕的。然后重新编译,运行php -r "t2_hello();"这时,我们的hello world!到此完成了时间不太多,下次我们再说关于变量和参数值传递的处理还有几个模块的魔术方法(zend_module_entry)。
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
2 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前
By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸
