Interface principale vers le code C et les données

(PHP 7 >= 7.4.0, PHP 8)

Introduction

Les objets de cette classe sont créés par les méthodes de fabrique FFI::cdef(), FFI::load() ou FFI::scope(). Les variables C définies sont disponibles en tant que propriétés de l'instance FFI, et les fonctions C définies sont disponibles comme méthodes de l'instance FFI. Les types C déclarés peuvent être utilisés pour créer de nouvelles structures de données C en utilisant FFI::new() et FFI::type().

L'analyse des définitions FFI et le chargement des bibliothèques partagées peuvent prendre beaucoup de temps. Il n'est pas utile de le faire à chaque requête HTTP dans un environnement Web. Cependant, il est possible de précharger les définitions FFI et les bibliothèques au démarrage de PHP, et d'instancier les objets FFI lorsque c'est nécessaire. Les fichiers d'en-tête peuvent être étendus avec des définitions FFI_SCOPE spéciales (par exemple #define FFI_SCOPE "foo"; la portée par défaut est "C") et ensuite chargés par FFI::load() pendant le préchargement. Cela conduit à la création d'une liaison persistante, qui sera disponible pour toutes les requêtes suivantes par l'intermédiaire de FFI::scope(). Reportez-vous à l'exemple complet PHP/FFI/preloading pour plus de détails.

Il est possible de précharger plus d'un fichier d'en-tête C dans la même portée.

Synopsis de la classe

finalclassFFI {
publicstaticaddr(FFI\CData&$ptr): FFI\CData
publicstaticalignof(FFI\CData|FFI\CType&$ptr): int
publicstaticarrayType(FFI\CType$type, array$dimensions): FFI\CType
publicstaticcdef(string$code = "", ?string$lib = null): FFI
publicstaticfree(FFI\CData&$ptr): void
publicstaticisNull(FFI\CData&$ptr): bool
publicstaticload(string$filename): ?FFI
publicstaticmemcmp(string|FFI\CData&$ptr1, string|FFI\CData&$ptr2, int$size): int
publicstaticmemcpy(FFI\CData&$to, FFI\CData|string&$from, int$size): void
publicstaticmemset(FFI\CData&$ptr, int$value, int$size): void
publicnew(FFI\CType|string$type, bool$owned = true, bool$persistent = false): ?FFI\CData
publicstaticscope(string$name): FFI
publicstaticsizeof(FFI\CData|FFI\CType&$ptr): int
publicstaticstring(FFI\CData&$ptr, ?int$size = null): string
publictype(string$type): ?FFI\CType
publicstatictypeof(FFI\CData&$ptr): FFI\CType
}

Constantes pré-définies

FFI::__BIGGEST_ALIGNMENT__

Sommaire

  • FFI::addr — Crée un pointeur non géré vers des données C
  • FFI::alignof — Récupère l'alignement
  • FFI::arrayType — Construit dynamiquement un nouveau type de tableau C
  • FFI::cast — Effectue une conversion de type C
  • FFI::cdef — Crée un nouvel objet FFI
  • FFI::free — Libère une structure de données non gérée
  • FFI::isNull — Vérifie si un objet FFI\CData est un pointeur null
  • FFI::load — Charge les déclarations C à partir d'un fichier d'en-tête C
  • FFI::memcmp — Comparaison des zones de mémoire
  • FFI::memcpy — Copie d'une zone de mémoire dans une autre
  • FFI::memset — Remplit une zone de mémoire
  • FFI::new — Crée une structure de données C
  • FFI::scope — Instancie un objet FFI avec les déclarations C analysées lors du préchargement
  • FFI::sizeof — Récupère la taille des données ou des types C
  • FFI::string — Crée une chaîne PHP à partir d'une zone de mémoire
  • FFI::type — Crée un objet FFI\CType à partir d'une déclaration C
  • FFI::typeof — Récupère le FFI\CType de FFI\CData
To Top