此扩展允许加载共享库(.DLL 或 .so),调用 C 函数并在纯 PHP 中访问 C 数据结构,而无需深入了解 Zend 扩展 API,也不需要学习第三种“中间”语言。公共 API 作为单个类 FFI 实现,包含多个静态方法(其中一些方法可以动态调用),以及执行与 C 数据实际交互的重载对象方法。
FFI 很危险,因为它允许在非常低的级别与系统交互。FFI 扩展只能由熟悉 C 和使用 C API 的开发人员使用。为了最大限度地降低风险,FFI API 的使用可以通过 ffi.enable php.ini 指令进行限制。
注意:
FFI 扩展不会使经典的 PHP 扩展 API 过时;它只是为了与 C 函数和数据结构进行临时交互而提供的。
目前,访问 FFI 数据结构的速度明显(大约快 2 倍)低于访问本机 PHP 数组和对象。因此,将 FFI 扩展用于速度没有意义;但是,将其用于减少内存消耗可能是有意义的。