ConFoo 2025

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdefCrée un nouvel objet FFI

Description

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

Crée un nouvel objet FFI.

Liste de paramètres

code

Une chaîne de caractères contenant une séquence de déclarations en langage C ordinaire (types, structures, fonctions, variables, etc). En fait, cette chaîne peut être copiée-collée à partir de fichiers d'en-tête C.

Note:

Les directives du préprocesseur C ne sont pas prises en charge, c'est-à-dire #include, #define et les macros CPP ne fonctionnent pas.

lib

Le nom d'un fichier de bibliothèque partagée, à charger et à lier avec les définitions.

Note:

Si lib est omis ou null, les plates-formes supportant RTLD_DEFAULT tentent de rechercher les symboles déclarés dans code dans la portée globale. Les autres systèmes ne parviendront pas à résoudre ces symboles.

Valeurs de retour

Retourne l'objet FFI fraîchement créé.

Historique

Version Description
8.3.0 Les fonctions C retournant void renvoient un null PHP au lieu de FFI\CType::TYPE_VOID.
8.0.0 lib est désormais nullable.
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