Introdução

Esta extensão permite o carregamento de bibliotecas compartilhadas (.DLL ou .so), a chamada de funções escritas em C e o acesso à estruturas de dados de C em PHP puro, sem a necessidade de maiores conhecimentos da API de extensões do Zend, e sem a necessidade de aprender uma terceira linguagem “intermediária”. A API pública é implementada como uma única classe FFI com diversos métodos estáticos (alguns deles podem ser chamados dinamicamente) e métodos de objetos sobrecarregados, que realizam a interação com os dados em C.

Caution

A FFI é perigosa, visto que permite a interface com o sistema em um nível muito baixo. A extensão FFI deve ser usada apenas por desenvolvedores que possuam experiência com C e com as APIs de C utilizadas. Para minimizar o risco, a utilização da API da FFI pode ser restringida com a opção ffi.enable do php.ini.

Note:

A extensão FFI não torna a API de extensão clássica do PHP obsoleta; ela é apenas fornecida para interface ad-hoc com funções e estruturas de dados em C.

Tip

Atualmente, acessar estruturas de dados com a FFI é significativamente mais lento (aproximadamente 2 vezes) do que acessar arrays e objetos nativos de PHP. Portanto, não faz sentido utilizar a extensão FFI para ganhos de performance; entretanto, pode fazer sentido utilizá-la para reduzir o consumo de memória.