C Data Handles
(PHP 7 >= 7.4.0, PHP 8)
简介
FFI\CData objects can be used in a number of ways as a regular
PHP data:
-
C data of scalar types can be read and assigned via the $cdata property, e.g.
$x = FFI::new('int'); $x->cdata = 42;
-
C struct and union fields can be accessed as regular PHP object property, e.g.
$cdata->field
-
C array elements can be accessed as regular PHP array elements, e.g.
$cdata[$offset]
-
C arrays can be iterated using foreach statements.
-
C arrays can be used as arguments of count().
-
C pointers can be dereferenced as arrays, e.g.
$cdata[0]
-
C pointers can be compared using regular comparison operators (
<
,
<=
, ==
, !=
, >=
, >
).
-
C pointers can be incremented and decremented using regular
+
/-
/
++
/--
operations, e.g. $cdata += 5
-
C pointers can be subtracted from another using regular
-
operations.
-
C pointers to functions can be called as a regular PHP closure, e.g.
$cdata()
-
Any C data can be duplicated using the clone
operator, e.g.
$cdata2 = clone $cdata;
-
Any C data can be visualized using var_dump(), print_r(), etc.
Note:
Notable limitations are that FFI\CData instances do not support
isset(), empty() and unset(),
and that wrapped C structs and unions do not implement Traversable.
User Contributed Notes
There are no user contributed notes for this page.