PHP8 C Data Handles

2023-09-05 13:44 更新

(PHP 7 >= 7.4.0, PHP 8)

簡(jiǎn)介

FFI\CData 對(duì)象可以通過多種方式用作常規(guī) PHP 數(shù)據(jù):

  • 標(biāo)量類型的 C 數(shù)據(jù)可以通過 $cdata 屬性讀取和賦值,例如$x = FFI::new('int'); $x->cdata = 42;

  • C struct 和 union 字段可以作為常規(guī) PHP 對(duì)象屬性進(jìn)行訪問,例如$cdata->字段

  • C 數(shù)組元素可以像常規(guī) PHP 數(shù)組元素一樣訪問,例如$cdata[$偏移量]

  • C 數(shù)組可以使用 foreach 語句進(jìn)行迭代。

  • C 數(shù)組可以用作 count() 的參數(shù)。

  • C 指針可以作為數(shù)組取消引用,例如$cdata[0]

  • C 指針可以使用常規(guī)比較運(yùn)算符(<、<=、==、!=、>=、>)進(jìn)行比較。

  • C 指針可以使用常規(guī) +/-/++/–- 操作來遞增和遞減,例如$cdata += 5

  • 可以使用常規(guī)的 -?? 運(yùn)算將 C 指針從另一個(gè)指針中減去。

  • 指向函數(shù)的 C 指針可以作為常規(guī) PHP 閉包進(jìn)行調(diào)用,例如$cdata()

  • 任何 C 數(shù)據(jù)都可以使用克隆運(yùn)算符復(fù)制,例如$cdata2 = 克隆 $cdata;

  • 任何 C 數(shù)據(jù)都可以使用 var_dump()、print_r() 等進(jìn)行可視化。

注意:值得注意的限制是 FFI\CData 實(shí)例不支持 isset()、empty() 和 unset(),并且包裝的 C 結(jié)構(gòu)和聯(lián)合不實(shí)現(xiàn) Traversable。

類摘要

final class FFI\CData {
}


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)