PHP 8.4.2 Released!

Interface principal ao código e aos dados em C

(PHP 7 >= 7.4.0, PHP 8)

Introdução

Os objetos desta classe são criados pelos métodos de construção FFI::cdef(), FFI::load() ou FFI::scope(). Variáveis ​​C definidas são disponibilizadas como propriedades da instância FFI e funções C definidas são disponibilizadas como métodos da instância FFI. Os tipos C declarados podem ser usados ​​para criar novas estruturas de dados C usando FFI::new() e FFI::type().

A análise da definição FFI e o carregamento da biblioteca compartilhada podem levar um tempo significativo. Não é útil fazer isso em cada solicitação HTTP em um ambiente Web. Entretanto, é possível pré-carregar definições e bibliotecas FFI na inicialização do PHP e instanciar objetos FFI quando necessário. Os arquivos de cabeçalho podem ser estendidos com definições especiais de FFI_SCOPE (por exemplo, #define FFI_SCOPE "foo"; o escopo padrão é "C") e então carregados por FFI::load() durante o pré-carregamento. Isto leva à criação de uma ligação persistente, que estará disponível para todas as solicitações seguintes através de FFI::scope(). Consulte o exemplo completo de PHP/FFI/pré-carregamento para obter detalhes.

É possível pré-carregar mais de um arquivo de cabeçalho C no mesmo escopo.

Resumo da classe

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__

Índice

  • FFI::addr — Cria um ponteiro não gerenciado para dado C
  • FFI::alignof — Obtém o alinhamento
  • FFI::arrayType — Constrói dinamicamente um novo array tipo C
  • FFI::cast — Realiza um conversão de tipo C
  • FFI::cdef — Cria um novo objeto FFI
  • FFI::free — Libera uma estrutura de dados não gerenciada
  • FFI::isNull — Verifica se um FFI\CData é um ponteiro nulo
  • FFI::load — Carrega declarações C a partir de um arquivo de cabeçalho
  • FFI::memcmp — Compara áreas da memória
  • FFI::memcpy — Copia uma área da memória para outra
  • FFI::memset — Preenche uma área de memória
  • FFI::new — Cria uma estrutura de dados C
  • FFI::scope — Instancia um objeto FFI com declarações C analisadas durante o pré-carregamento
  • FFI::sizeof — Obtém o tamanho do dado ou tipo C
  • FFI::string — Cria uma string PHP a partir de uma área de memória
  • FFI::type — Cria um objeto FFI\CType a partir de uma declaração C
  • FFI::typeof — Obtém o FFI\CType de FFI\CData
adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top