许多开发人员在PHP中使用外部函数接口。在这里,我们介绍了它是什么以及如何使用它。
什么是PHP外部函数接口?
PHP外部函数接口(FFI)是PHP 7.4中的接口,使开发人员可以使用纯PHP创建扩展和对外部(也称为“外部”)库的绑定。
他们还可以使用它来调用C函数并访问C数据结构。
为什么PHP外部函数接口很重要?
PHP中的外部函数接口是具有开创性的,因为以前,开发人员只能创建扩展和对外部(也称为“外部”)库的绑定-并使用C语言编写的PHP扩展和绑定来调用C函数并访问C数据结构。能够使用纯PHP完成这些任务:
- 节省时间。
- 为PHP开发人员创造了新的机会-例如使在代码中使用机器学习更加容易。
可以节省时间
能够使用PHP中的此接口直接从PHP代码连接到外部C共享库,从而节省了开发人员时间,因为他们可以最大程度地减少用C编写新的PHP扩展和绑定的需要。
例如,使用界面,他们可以:
- 对不具有PHP扩展名的库启用快速原型制作。
- 为没有C专业知识并且需要与共享库(包括专有软件中的库)接口的商店提供解决方案。有了足够的PHP专业知识,他们现在可以在内部开发绑定。
它可以创造新的机会
PHP中的该接口具有一些有趣的应用程序,这些应用程序可以使用异步PHP(包括Swoole)以及预加载时间长的库,例如机器学习模型。另外,由于该扩展使调用C函数和C数据结构更加容易,因此组织可以在C中开发一段代码来更快地运行CPU密集型工作负载,并使用该接口进行连接。
如今,PHP社区的领导者正在测试此PHP接口的使用,以支持PHP应用程序中不经常使用的功能。例如:
- Dmitry Stogov使用Tensorflow编写了FFI的概念证明。(以PHP加载是非常困难的。)
- Remi Collet正在测试Redis绑定。
FFI的历史和地位是什么?
外部函数接口最初在Python和LuaJIT中可用,并且使这些语言对于快速原型制作非常有用。如今,许多语言都具有这种类型的界面。
Dmitry Stogov是PHP的主要核心贡献者之一,也是Perforce员工的Zend,他写了PHP FFI。它最初是在PHP 7.4中引入的,仍被认为是实验性的。到2020年,社区可能会在扩展中添加更多功能,并提高其性能。
它会取代PHP扩展吗?
现在说还为时过早,尽管PHP中的此接口不太可能会取代PHP扩展。许多PHP扩展不仅仅是使用PHP数据对象(PDO)绑定到C库。但是,如果外部功能接口的性能达到或更高,则可能会替换更简单的扩展名。在撰写此博客时,几乎在每种情况下,PHP的此接口都比纯C / C 扩展慢。
如何在PHP中使用外部函数接口
开始在PHP中使用此接口非常简单:
1.创建一个最小的头文件
为要与之绑定的库创建一个最小的头文件。头文件(C中的.h文件)定义了PHP和数据类型将可用的接口。
2.实例化FFI
使用该头文件和/或您要加载的库实例化FFI。
3.准备数据结构
如果需要,请准备数据结构,然后从要通过FFI实例绑定的库中调用函数,就好像它们是FFI对象的方法一样。
警告:由于此扩展仍处于试验阶段,并且启用了系统之间的日志级别接口,因此,只有在具有C和代码中C API的高级知识的情况下,才应使用该扩展。您可以使用ffi.enable指令将风险降至最低。
了解PHP使用趋势
所有网站中有将近80%是用PHP编写的。组织正在使用诸如PHP接口和PHP扩展之类的功能来帮助发展其站点并使用现代Web服务实现更大的创新。
我们对500多家PHP开发人员和商业领袖进行了调查,调查了他们的使用和涉及PHP的战略计划。