Documentación offline PHP master

Gestor de datos C

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

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.

[!NOTE] 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#

FFI

final

CData

Historial de cambios#

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