PHP8 C Data Handles

2023-09-05 13:44 更新

(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 {
}


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号