FFI::new
(PHP 7 >= 7.4.0, PHP 8)
FFI::new — Creates a C data structure
説明
Creates a native data structure of the given C type. Any type declared for the instance is allowed.
パラメータ
type
-
type
is a valid C declaration as string, or an instance of FFI\CType which has already been created. owned
-
Whether to create owned (i.e. managed) or unmanaged data. Managed data lives together with the returned FFI\CData object, and is released when the last reference to that object is released by regular PHP reference counting or GC. Unmanaged data should be released by calling FFI::free(), when no longer needed.
persistent
-
Whether to allocate the C data structure permanently on the system heap (using malloc()), or on the PHP request heap (using emalloc()).
変更履歴
バージョン | 説明 |
---|---|
8.3.0 | Calling FFI::new() statically is now deprecated. |
User Contributed Notes 1 note
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;
?>