(PHP 7 >= 7.4.0, PHP 8)
FFI\CData オブジェクトは、通常の PHP データのように様々な方法で使用できます:
スカラー型の C のデータは $cdata プロパティを通してアクセスできます。例:
$x = FFI::new('int'); $x->cdata = 42;
C の構造体や共用体のフィールドは通常の PHP のオブジェクトプロパティのようにアクセスできます。例:
$cdata->field
C の配列要素は通常の PHP の配列要素のようにアクセスできます。例:
$cdata[$offset]
C の配列は foreach 文を使って反復できます。
C の配列は count() の引数として使えます。
C のポインタは配列のように参照外しできます。例: $cdata[0]
C のポインタは通常の比較演算子を使って比較できます (<、
<=、==、!=、>=、>)。
C のポインタは通常の +/-/
++/-- 演算子を使ってインクリメント・デクリメントできます。例: $cdata += 5
C のポインタは通常の - 演算子を使って他のポインタと引き算できます。
C の関数ポインタは通常の PHP のクロージャのように呼び出せます。例: $cdata()
任意の C のデータは clone 演算子を使って
複製できます。例: $cdata2 = clone $cdata;
任意の C のデータは var_dump() や print_r() 等を 使って可視化できます。
PHP 8.3.0 以降、FFI\CData は構造体やフィールドに代入できるようになりました。
注意:
特筆すべき制限として、FFI\CData インスタンスは isset()、empty()、unset() をサポートしていません。 また、ラップされた C の構造体や共用体は Traversable を実装していません。
| バージョン | 説明 |
|---|---|
| 8.3.0 | FFI\CData は構造体やフィールドに代入できるようになりました。 |