PHP Conference Kansai 2025

Gestor de datos C

(PHP 7 >= 7.4.0, PHP 8)

Introducción

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.

Sinopsis de la Clase

final class FFI\CData {
}

Historial de cambios

Versión Descripción
8.3.0 FFI\CData puede ahora ser atribuido a estructuras y campos.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top