PHP8 C Data Handles
(PHP 7 >= 7.4.0, PHP 8)
简介
FFI\CData 对象可以通过多种方式用作常规 PHP 数据:
标量类型的 C 数据可以通过 $cdata 属性读取和赋值,例如$x = FFI::new('int'); $x->cdata = 42;
C struct 和 union 字段可以作为常规 PHP 对象属性进行访问,例如$cdata->字段
C 数组元素可以像常规 PHP 数组元素一样访问,例如$cdata[$偏移量]
C 数组可以使用 foreach 语句进行迭代。
C 数组可以用作 count() 的参数。
C 指针可以作为数组取消引用,例如$cdata[0]
C 指针可以使用常规比较运算符(<、<=、==、!=、>=、>)进行比较。
C 指针可以使用常规 +/-/++/–- 操作来递增和递减,例如$cdata += 5
可以使用常规的 - 运算将 C 指针从另一个指针中减去。
指向函数的 C 指针可以作为常规 PHP 闭包进行调用,例如$cdata()
任何 C 数据都可以使用克隆运算符复制,例如$cdata2 = 克隆 $cdata;
任何 C 数据都可以使用 var_dump()、print_r() 等进行可视化。
注意:值得注意的限制是 FFI\CData 实例不支持 isset()、empty() 和 unset(),并且包装的 C 结构和联合不实现 Traversable。
类摘要
final class FFI\CData {
}