FFIとは
FFIの読み方は?何の略?
FFIはカタカナで表すと、「エフエフアイ」と読みます。
FFIは「Foreign Function Interface」-フォーリン ファンクション インターフェイス-の略称です。
別名外部関数インターフェースと言います。
FFIって何?
FFIとは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機能のことです。主に高水準言語からC言語などの関数やメソッドを呼び出してOS固有の機能などを利用するために使用されることが多いです。
そんなことが出来るんだぁ。どんな時に使うの?
例えば、以下のような場合です。
- 高速化として低レベル言語のコードを使いたい場合
- 他の言語でしか提供されていないライブラリを使いたい場合
- OSやハードウェアに近い処理が必要な場合
なるほど…たしかに使わないと実装できない場面もありそう…
PHPでのFFI
C言語の呼び出し方
FFI::cdef(
"C言語の関数や構造体の宣言(ヘッダー部分)",
"ライブラリファイル名(例: libc.so.6, msvcrt.dll など)"
);
FFIクラス?
そう、FFIクラス。これはPHP.7.4から組み込みクラスとして導入されています。
グローバルクラス関数なんだね。じゃあ何も設定無しに使えちゃうの?
特別な名前空間には属してないので、直接使えます。
が…
が…
php.ini でFFIを有効にする必要があります。
FFIの設定
デフォルトではセキュリティの理由で無効になっていることが多いので、以下の設定を php.ini に追加します。ffi.enable = true
簡単だぁ!
C言語以外のケース
C言語以外の他の言語は?
FFIは、基本的にはC言語へのアクセスになります。
PythonやRubyなども、FFIでC言語を呼び出し出来るようになっています。
そういうことです。
…ってゆあちゃん、珍しくよく知ってるね^ ^
…ってゆあちゃん、珍しくよく知ってるね^ ^
私だって知ってるところはあるよぉぉぉ〜(>_<)。゚。笑
今回は
- FFIとは
- PHPでのFFI
- C言語以外のケース