Interfaz principal para el código C y los datos

(PHP 7 >= 7.4.0, PHP 8)

Introducción

Los objetos de esta clase son creados por los métodos de fábrica FFI::cdef(), FFI::load() o FFI::scope(). Las variables C definidas están disponibles como propiedades de la instancia FFI, y las funciones C definidas están disponibles como métodos de la instancia FFI. Los tipos C declarados pueden ser utilizados para crear nuevas estructuras de datos C utilizando FFI::new() y FFI::type().

El análisis de las definiciones FFI y la carga de las bibliotecas compartidas pueden llevar mucho tiempo. No es útil hacerlo en cada solicitud HTTP en un entorno Web. Sin embargo, es posible precargar las definiciones FFI y las bibliotecas al inicio de PHP, e instanciar los objetos FFI cuando sea necesario. Los archivos de encabezado pueden ser extendidos con definiciones FFI_SCOPE especiales (por ejemplo #define FFI_SCOPE "foo"; el ámbito por omisión es "C") y luego cargados por FFI::load() durante la precarga. Esto conduce a la creación de una ligadura persistente, que estará disponible para todas las solicitudes siguientes a través de FFI::scope(). Consulte el ejemplo completo PHP/FFI/preloading para más detalles.

Es posible precargar más de un archivo de encabezado C en el mismo ámbito.

Sinopsis de la Clase

final class FFI {
/* Constantes */
public const int __BIGGEST_ALIGNMENT__;
/* Métodos */
public static addr(FFI\CData &$ptr): FFI\CData
public static alignof(FFI\CData|FFI\CType &$ptr): int
public static arrayType(FFI\CType $type, array $dimensions): FFI\CType
public static cdef(string $code = "", ?string $lib = null): FFI
public static free(FFI\CData &$ptr): void
public static isNull(FFI\CData &$ptr): bool
public static load(string $filename): ?FFI
public static memcmp(string|FFI\CData &$ptr1, string|FFI\CData &$ptr2, int $size): int
public static memcpy(FFI\CData &$to, FFI\CData|string &$from, int $size): void
public static memset(FFI\CData &$ptr, int $value, int $size): void
public new(FFI\CType|string $type, bool $owned = true, bool $persistent = false): ?FFI\CData
public static scope(string $name): FFI
public static sizeof(FFI\CData|FFI\CType &$ptr): int
public static string(FFI\CData &$ptr, ?int $size = null): string
public type(string $type): ?FFI\CType
public static typeof(FFI\CData &$ptr): FFI\CType
}

Constantes predefinidas

FFI::__BIGGEST_ALIGNMENT__

Tabla de contenidos

  • FFI::addr — Crea un puntero no gestionado hacia datos C
  • FFI::alignof — Recupera el alineamiento
  • FFI::arrayType — Construye dinámicamente un nuevo tipo de array C
  • FFI::cast — Realiza una conversión de tipo C
  • FFI::cdef — Crea un nuevo objeto FFI
  • FFI::free — Libera una estructura de datos no gestionada
  • FFI::isNull — Verifica si un objeto FFI\CData es un puntero nulo
  • FFI::load — Carga las declaraciones C desde un archivo de encabezado C
  • FFI::memcmp — Comparación de zonas de memoria
  • FFI::memcpy — Copia de una zona de memoria en otra
  • FFI::memset — Rellena una zona de memoria
  • FFI::new — Crea una estructura de datos C
  • FFI::scope — Instancia un objeto FFI con las declaraciones C analizadas durante la precarga
  • FFI::sizeof — Recupera el tamaño de los datos o tipos C
  • FFI::string — Crea una string PHP a partir de una zona de memoria
  • FFI::type — Crea un objeto FFI\CType a partir de una declaración C
  • FFI::typeof — Recupera el FFI\CType de FFI\CData
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top