PHP 8.4.1 Released!

FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::newCrée une structure de données C

Description

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

Crée une structure de données native du type C donné. N'importe quel type déclaré pour l'instance est autorisé.

Liste de paramètres

type

type est une déclaration C valide comme string, ou une instance de FFI\CType qui a déjà été créée.

owned

Création de données gérées ou non gérées. Les données gérées vivent avec l'objet FFI\CData retourné, et sont libérées lorsque la dernière référence à cet objet est libérée par le comptage de références ordinaire de PHP ou le ramasse-miette. Les données non gérées doivent être libérées en appelant FFI::free(), lorsqu'elles ne sont plus nécessaires.

persistent

Allouer la structure de données C de manière permanente sur le tas du système (en utilisant malloc()), ou sur le tas des requêtes PHP (en utilisant emalloc()).

Valeurs de retour

Retourne l'objet FFI\CData fraîchement créé, ou null en cas d'échec.

Historique

Version Description
8.3.0 L'appel statique de FFI::new() est désormais obsolète.

add a note

User Contributed Notes 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