PHP Conference Kansai 2025

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdefCrea un nuevo objeto FFI

Descripción

public static FFI::cdef(string $code = "", ?string $lib = null): FFI

Crea un nuevo objeto FFI.

Parámetros

code

Un string que contiene una secuencia de declaraciones en lenguaje C ordinario (tipos, estructuras, funciones, variables, etc). De hecho, este string puede ser copiado y pegado desde ficheros de encabezado C.

Nota:

Las directivas del preprocesador C no son soportadas, es decir, #include, #define y las macros CPP no funcionan.

lib

El nombre de un fichero de biblioteca compartida, para cargar y enlazar con las definiciones.

Nota:

Si lib es omitido o null, las plataformas que soportan RTLD_DEFAULT intentan buscar los símbolos declarados en code en el ámbito global. Los otros sistemas no lograrán resolver estos símbolos.

Valores devueltos

Devuelve el objeto FFI recién creado.

Historial de cambios

Versión Descripción
8.3.0 Las funciones C que devuelven void devuelven un null PHP en lugar de FFI\CType::TYPE_VOID.
8.0.0 lib es ahora nullable.
add a note

User Contributed Notes 1 note

up
0
derrekbertrand at gmail dot com
5 years ago
You'll probably want to add a C header file, but as of the current version preprocessor directives do not work... so what do? On systems with GCC run the file through this command:

cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h

Note that because preprocessing is not suppored in FFI, C/C++ macros are not supported either. You'll probably still have to write a small wrapper in C unless your library has an exceedingly simple public API.
To Top