PHP 8.4.2 Released!

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdefСоздаёт новый объект FFI

Описание

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

Создаёт новый объект FFI.

Список параметров

code

Строка, содержащая последовательность деклараций на языке С (типы, структуры, функции, переменные и т.д.). Фактически можно скопировать кусок заголовочного файла С.

Замечание:

Директивы сопроцессора С не поддерживаются. Т.е. #include, #define и макросы CPP работать не будут.

lib

Имя файла библиотеки, который будет загружен и связан с заданными декларациями.

Замечание:

Если параметр lib не задан или null, то для платформ, поддерживающих RTLD_DEFAULT, будет произведён поиск задекларированных в code сущностей в глобальной области видимости. Для прочих платформ произвести привязку не получится.

Возвращаемые значения

Возвращает новый объект FFI.

Список изменений

Версия Описание
8.3.0 Функции языка Си, возвращающие void, возвращают PHP null вместо FFI\CType::TYPE_VOID.
8.0.0 lib теперь допускает значение null.
Добавить

Примечания пользователей 1 note

up
3
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