当前位置:首页 >网络 >

PHP 7.4的FFI将更好支持使用C函数/数据结构

2019-10-31 13:49:00

即将在下月底发布的 PHP 7.4 将会引入一个有趣的新功能,那就是期待已久的对 FFI(外部函数接口,Foreign Function Interface)的支持。此功能使得开发者可以在原生 PHP 代码中调用 C 定义的函数/变量/数据结构。

FFI 与预加载功能都将是 PHP 7.4 的重要新功能,FFI 还增强了 PHP FPM systemd 服务、用于 OpenSSL 流的 TLS 1.3 以及许多其他更改。PHP 7.4 的 FFI 甚至可与其他语言的 FFI 实现相媲美。

使用 PHP FFI 应该可以减少为 C 库/程序接口编写新 PHP 模块的需求,因为现在可以使用外部函数接口来完成了。如果你对 PHP 7.4 FFI 的示例代码感到好奇,负责 Fedora/RedHat 的 PHP 打包程序工程师 Remi Collet 撰写了一篇新的博客文章,其中概述了一些带有示例代码的用例。

下面摘录一个简单的例子:

Redis 客户端

目前存在使用 C 或 PHP 编写的 Redis 客户端的各种实现,此示例演示了使用 FFI 来访问 hiredis 库的函数。

定义库,从库的头文件 hiredis/hredis.h 和 hiredis/read.h 复制/粘贴:preload-redis.h对需要预加载的 Remi\Redis 类进行定义:preload-redis.inc使用此类的测试脚本:redis.php输出摘要

$ php74 -d ffi.preload=preload-redis.h -d opcache.preload=preload-redis.inc redis.php

...

+ Remi\Redis::__construct(localhost, 6379)

+ Remi\Redis::initFFI()

+ Remi\Redis::del(foo)

int(1)

+ Remi\Redis::get(foo)

NULL

+ Remi\Redis::set(foo, 2019/10/23 12:45:03)

string(2) "OK"

+ Remi\Redis::get(foo)

string(19) "2019/10/23 12:45:03"

+ Remi\Redis::__destruct

如果希望了解有关 PHP 7.4 FFI 的更多信息,可以查看 PHP.net 上的文档及其基本示例。在发布 PHP 7.4 GA 前估计会经历多个 RC 版本,GA 预计将在 11 月 28 日左右发布。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。

推荐阅读

  • 初级教程:微信上的标签怎么删除
    微信上的标签怎么删除微信好友删除标签的步骤是:1、打开位置,在【通讯录】页面,点击【标签】选项。2、选择并点击好友所在的标签。3、点击【删除标签】即可。微信(w
    2022-04-29
  • 使用手册:微信群聊怎么指定回复某一段话
    微信群聊怎么指定回复某一段话微信群聊指定回复某一段话的方法是:1、打开微信群聊。2、长按需要回复的对话,在弹出的对话框里点击【引用】选项。3、输入回复内容即可。
    2022-04-29
  • 技术教程:微信聊天背景动态壁纸怎么设置
    微信聊天背景动态壁纸怎么设置微信是不能设置动态聊天背景的。微信聊天背景图的设置方法如下:1、点击微信菜单栏的【我】--【设置】,进入设置选项;2、进入设置页面,
    2022-04-28
  • 联发科天玑2000旗舰芯片已备好,请于Q3-Q4季度查收!
    三星马上就发布带AMD RDNA 2 GPU的SOC,高通也准备了骁龙888 PLUS和骁龙895,苹果则是A15在9月份蓄势待发。今年下半年的高端芯片市场竞争
    2021-07-09
  • 虎牙斗鱼合并泡汤!腾讯回应
    2021年1月4日,市场监管总局对腾讯申报的虎牙与斗鱼合并案,依法进行经营者集中反垄断审查。7月9日,市场监管总局依据《反垄断法》,全面分析评估,审查表明,腾讯
    2021-07-10
  • 谷歌 Fuchsia O S系统新标识曝光,黑了
    根据外媒爆料,从美国专利商标局发现谷歌提交了一项图标专利申请, 可以看出是基于英文字母“f”的设计而来,从原来活泼的紫红色变成稳重的黑色,本质设计上来说都是无限
    2021-07-13