ConFoo 2025

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdefCreates a new FFI object

Açıklama

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

Creates a new FFI object.

Bağımsız Değişkenler

code

A string containing a sequence of declarations in regular C language (types, structures, functions, variables, etc). Actually, this string may be copy-pasted from C header files.

Bilginize:

C preprocessor directives are not supported, i.e. #include, #define and CPP macros do not work.

lib

The name of a shared library file, to be loaded and linked with the definitions.

Bilginize:

If lib is omitted or null, platforms supporting RTLD_DEFAULT attempt to lookup symbols declared in code in the normal global scope. Other systems will fail to resolve these symbols.

Dönen Değerler

Returns the freshly created FFI object.

Sürüm Bilgisi

Sürüm: Açıklama
8.3.0 C functions returning void return a PHP null instead of FFI\CType::TYPE_VOID.
8.0.0 lib is nullable now.
add a note

User Contributed Notes 1 note

up
0
derrekbertrand at gmail dot com
4 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