ConFoo 2025

FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::newCria uma estrutura de dados C

Descrição

public FFI::new(FFI\CType|string $type, bool $owned = true, bool $persistent = false): ?FFI\CData

Cria uma estrutura de dados nativa do tipo C fornecido. Qualquer tipo declarado para a instância é permitido.

Parâmetros

type

type é uma declaração C válida como uma string ou uma instância de FFI\CType que já tenha sido criada.

owned

Define se serão criados dados próprios (ou seja, gerenciados) ou não gerenciados. Os dados gerenciados residem junto com o objeto FFI\CData retornado e são liberados quando a última referência a esse objeto é liberada pela contagem regular de referências do PHP ou pelo GC. Dados não gerenciados devem ser liberados chamando FFI::free(), quando não forem mais necessários.

persistent

Define se a estrutura de dados C será alocada permanentemente na memória do sistema (usando malloc()) ou na memória de requisição do PHP (usando emalloc()).

Valor Retornado

Retorna o objeto FFI\CData recém criado ou null em caso de falha.

Registro de Alterações

Versão Descrição
8.3.0 Chamar FFI::new() estaticamente agora foi descontinuado.

adicione uma nota

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

up
0
baminazad at cs dot stonybrook dot edu
4 years ago
Let's assume we have a C struct:
typedef struct _Z3_ast *Z3_ast;

and we want to create an array:
Z3_ast args[2];

and assign values:
args[1] = x;
args[1] = y;

The PHP FFI equivalent would be:
<?php
$ffi
= FFI::cdef(...
// Create Z3_ast[2] type
$arg_type = FFI::arrayType($ffi->type('Z3_ast'), [2]);
// Create array of type Z3_ast[2]
$args = FFI::new($arg_type);
// Populate the array
$args[0] = $x;
$args[1] = $y;
?>
To Top