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(). Se reporter Ă  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

final class FFI {
/* Constantes */
public const int __BIGGEST_ALIGNMENT__;
/* Méthodes */
public static function addr(FFI\CData &$ptr): FFI\CData
public static function alignof(FFI\CData|FFI\CType &$ptr): int
public static function arrayType(FFI\CType $type, array $dimensions): FFI\CType
public function cast(FFI\CType|string $type, FFI\CData|int|float|bool|null &$ptr): ?FFI\CData
public static function cdef(string $code = "", ?string $lib = null): FFI
public static function free(FFI\CData &$ptr): void
public static function isNull(FFI\CData &$ptr): bool
public static function load(string $filename): ?FFI
public static function memcmp(string|FFI\CData &$ptr1, string|FFI\CData &$ptr2, int $size): int
public static function memcpy(FFI\CData &$to, FFI\CData|string &$from, int $size): void
public static function memset(FFI\CData &$ptr, int $value, int $size): void
public function new(FFI\CType|string $type, bool $owned = true, bool $persistent = false): ?FFI\CData
public static function scope(string $name): FFI
public static function sizeof(FFI\CData|FFI\CType &$ptr): int
public static function string(FFI\CData &$ptr, ?int $size = null): string
public function type(string $type): ?FFI\CType
public static function typeof(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
add a note

User Contributed Notes

There are no user contributed notes for this page.