Основной интерфейс к коду и данным C
(PHP 7 >= 7.4.0)
Введение
Объекты этого класса создаются фабричными методами
FFI::cdef(),
FFI::load() и
FFI::scope(). Объявленные
переменные C доступны как свойства экземпляра FFI, а функции
как его методы. Объявленные типы C можно использовать
для создания структур данных с помощью
FFI::new() и
FFI::type().
Разбор объявлений FFI и загрузка разделяемой библиотеки
может занять значительное время. Не имеет смысла делать
это для каждого HTTP-запроса в окружении Web. Тем не
менее можно перезагрузить объявления FFI и библиотеки
при старте PHP и инстанциировать объекты FFI по
необходимости. Заголовочные файлы могут быть расширены
специальными объявлениями FFI_SCOPE
(например, #define FFI_SCOPE "foo"”"
;
скоуп по умолчанию "C") и загружены с помощью
FFI::load() во время предзагрузки.
Это приведёт к созданию постоянных привязок, которые
будут доступны для всех запросов через
FFI::scope().
Более подробно читайте на странице
Простые примеры использования FFI.
В один и тот же скоуп можно загрузить несколько
заголовочных файлов.
Обзор классов
FFI
{
public static cdef
(
string $code
= ""
,
string|null $lib
= null
):
FFI
public static load
(
string $filename
):
FFI|null
public static new
(
FFI\CType|string $type
,
bool $owned
= true
,
bool $persistent
= false
):
FFI\CData|null
public static scope
(
string $name
):
FFI
}
Содержание
- FFI::addr — Создаёт неуправляемый указатель на данные C
- FFI::alignof — Возвращает величину выравнивания
- FFI::arrayType — Динамически конструирует новый тип С массива
- FFI::cast — Производит преобразование типа C
- FFI::cdef — Создаёт новый объект FFI
- FFI::free — Высвобождает неуправляемую структуру данных
- FFI::isNull — Проверяет, является ли FFI\CData нулевым указателем
- FFI::load — Загрузить декларации C из заголовочного файла
- FFI::memcmp — Сравнивает две области памяти
- FFI::memcpy — Копирует содержимое одной области памяти в другую
- FFI::memset — Заполнить область памяти
- FFI::new — Создаёт структуру данных C
- FFI::scope — Инстанциирует объект FFI в соответствии с декларацией
С, разобранной на этапе предзагрузки
- FFI::sizeof — Возвращает размер данных или типа C
- FFI::string — Создаёт строку PHP из области памяти
- FFI::type — Создаёт объект FFI\CType из декларации С
- FFI::typeof — Получает FFI\CType для FFI\CData
There are no user contributed notes for this page.