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() 等函数进行可视化。
  • FFI\CData 现在可以从 PHP 8.3.0 开始被赋值给结构体和字段。

注意: 值得注意的限制是,FFI\CData 实例不支持 isset(), empty()unset(),并且包装的 C 结构体和联合体没有实现 Traversable

类概要

final class FFI\CData {
}

变更日志

版本 描述
8.3.0 FFI\CData 现在可以被赋值给结构体和字段。
添加笔记

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top