# 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 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 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open