PHP Conference Fukuoka 2025

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