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