(PHP 7 >= 7.4.0, PHP 8)
このクラスのオブジェクトは、ファクトリーメソッドである FFI::cdef() や FFI::load()、FFI::scope() によって作成されます。 定義された C の変数は FFI インスタンスのプロパティとして利用可能となり、 定義された C の関数は FFI インスタンスのメソッドとして利用可能となります。 宣言された C の型は、FFI::new() や FFI::type() を使って 新しい C のデータ構造を作成するのに使用できます。
FFI 定義のパースや共有ライブラリの読み込みには長い時間がかかることがあります。
Web 環境において、各 HTTP リクエストでこれを行うのは不便です。
しかし、FFI 定義やライブラリを PHP の起動時に事前ロードし、FFI オブジェクトを必要なときにインスタンス化することが可能です。
ヘッダーファイルは特殊な define である FFI_SCOPE によって拡張することができ
(例: #define FFI_SCOPE "foo"。デフォルトのスコープは "C" です)、
事前ロード中に FFI::load() によって読み込むことができます。
これによって、永続的なバインディングが作成されます。
こうして作られたバインディングは、FFI::scope() を通じて後続する全リクエストで利用可能となります。
詳しくは PHP/FFI/事前ロードの完全な例
を参照してください。
複数の C のヘッダーファイルを同一のスコープへと事前ロードできます。