Основной интерфейс к коду и данным 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.
В один и тот же скоуп можно загрузить несколько заголовочных файлов.
Обзор классов
$type
, FFI\CData|int|float|bool|null &$ptr
) : FFI\CData|null$type
, bool $owned
= true
, bool $persistent
= false
) : FFI\CData|nullСодержание
- 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