FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::newСоздаёт структуру данных C

Описание

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

Метод создаёт собственную структуру данных заданного типа. Разрешён любой тип, который объявили для экземпляра.

Список параметров

type

type — допустимое объявление типа С в виде строки (string) или экземпляр класса FFI\CType, которые создали заранее.

owned

Создавать ли управляемые или неуправляемые данные. Управляемые данные живут в связке с возвращённым объектом FFI\CData и высвобождаются, когда стандартный подсчёт ссылок PHP или сборщик мусора GC освободят последнюю ссылку на этот объект. Неуправляемые данные необходимо высвобождать вручную методом FFI::free().

persistent

Располагать ли структуру данных C в системной куче (heap) через функцию malloc() или в куче PHP-запроса через функцию emalloc().

Возвращаемые значения

Метод возвращает новый объект класса FFI\CData или null в случае возникновения ошибки.

Список изменений

Версия Описание
8.3.0 Статический вызов метода FFI::new() устарел.

Добавить

Примечания пользователей 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