FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::newCrea una estructura de datos C

Descripción

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

Crea una estructura de datos nativa del tipo C dado. Cualquier tipo declarado para la instancia está permitido.

Parámetros

type

type es una declaración C válida como string, o una instancia de FFI\CType que ya ha sido creada.

owned

Creación de datos gestionados o no gestionados. Los datos gestionados viven con el objeto FFI\CData devuelto, y son liberados cuando la última referencia a este objeto es liberada por el conteo de referencias ordinario de PHP o el recolector de basura. Los datos no gestionados deben ser liberados llamando a FFI::free(), cuando ya no sean necesarios.

persistent

Asignar la estructura de datos C de manera permanente en el montón del sistema (utilizando malloc()), o en el montón de las peticiones PHP (utilizando emalloc()).

Valores devueltos

Devuelve el objeto FFI\CData recién creado, o null en caso de fallo.

Historial de cambios

Versión Descripción
8.3.0 La llamada estática a FFI::new() ahora está obsoleta.

add a note

User Contributed Notes 1 note

up
0
baminazad at cs dot stonybrook dot edu
5 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