(PHP 7 >= 7.4.0, PHP 8)
Los objetos FFI\CData pueden ser utilizados de diferentes maneras, como datos PHP normales:
Los datos C de tipo escalar pueden ser leĆdos y asignados a travĆ©s de la propiedad $cdata, por ejemplo.
$x = FFI::new('int'); $x->cdata = 42;
Los campos de tipo struct y union pueden ser accedidos como propiedades de objetos PHP ordinarios, por ejemplo
$cdata->field
Los elementos de un array C son accesibles como los elementos de un array PHP, por ejemplo.
$cdata[$offset]
Los arrays C pueden ser iterados utilizando instrucciones foreach.
Los arrays C pueden ser utilizados como argumentos de count().
Los punteros C pueden ser desreferenciados como arrays, por ejemplo $cdata[0]
Los punteros C pueden ser comparados utilizando operadores de comparación ordinarios (<,
<=, ==, !=, >=, >).
Los punteros C pueden ser incrementados y decrementados utilizando operaciones ordinarias ( +/-/ / ).
++/--, por ejemplo $cdata += 5
Los punteros C pueden ser sustraĆdos de otro utilizando operaciones ordinarias -.
Los punteros C hacia funciones pueden ser llamados como una clausura PHP clƔsica, por ejemplo $cdata()
Cualquier dato C puede ser duplicado utilizando el operador clone,
por ejemplo $cdata2 = clone $cdata;
Todos los datos C pueden ser visualizados utilizando var_dump(), print_r(), etc.
FFI\CData puede ahora ser atribuido a estructuras y campos a partir de PHP 8.3.0.
Nota:
Las limitaciones notables son que las instancias de FFI\CData no soportan las funciones isset(), empty() y unset(), y que las structs y unions C envueltas no implementan Traversable.
| Versión | Descripción |
|---|---|
| 8.3.0 | FFI\CData puede ahora ser atribuido a estructuras y campos. |