外部函数接口

简介

此扩展允许在纯 PHP 中加载共享库(.DLL.so)、调用 C 函数、访问 C 数据结构,而无需深入了解 Zend 扩展 API,也无需学习第三方“中间”语言。公共 API 是使用包含几个静态方法(有几个可以动态调用)和对象重载方法(执行与 C 数据的实际交互)的 FFI 类实现的。

警告

FFI 有危险,因为它允许在系统上进行底层交互。FFI 扩展应该仅供有 C 和使用 C API 经验的开发者使用。为了最大限度降低风险,ffi.enable php.ini 指令会限制 FFI API 的使用。

注意: FFI 扩展不会提供讨厌的过时 PHP 扩展 API,它仅仅是提供了用于 C 函数和数据结构的特殊接口。

小技巧

目前,访问 FFI 数据结构比访问原生 PHP 数组和对象慢很多(大约 2 倍)。 因此使用 FFI 扩展来提高速度没有意义;减少内存消耗可能有意义。

添加备注

用户贡献的备注 1 note

up
1
Nathaniel Sabanski
2 years ago
Quickstart from Rasmus Lerdorf's 25 years of PHP talk. 

<?php
$ffi = FFI::cdef(
    "int printf(const char *format, ...);",
    "libc.so.6");
$ffi->printf("Hello %s!\n", "world");
?>

Requires ffi.enable=1
To Top