PHP Conference Japan 2024

C 資料控制代碼

(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 介面。

類別概要

final class FFI\CData {
}

更新日誌

版本 說明
8.3.0 FFI\CData 現在可以被賦值給結構和欄位。
新增註解

使用者提供的註解

此頁面沒有使用者提供的註解。
To Top