FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::new — CrĂ©e une structure de donnĂ©es C

Description

public function 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-miettes. 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 ¶
6 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;
?>