PHP 8.6.0 Beta 1 is available for testing

Основной интерфейс к коду и данным языка C

(PHP 7 >= 7.4.0, PHP 8)

Введение

Объекты этого класса создаются фабричными методами FFI::cdef() , FFI::load() и FFI::scope() . Объявленные переменные языка C доступны как свойства экземпляра класса FFI, а функции как методы. Методы FFI::new() и FFI::type() принимают или возвращают объявленные типы языка C, когда создают структуры данных C.

Разбор объявлений FFI и загрузка разделяемой библиотеки может занять значительное время. Не имеет смысла делать это для каждого HTTP-запроса в Web-окружении. Тем не менее можно перезагрузить объявления FFI и библиотеки при старте PHP и инстанциировать объекты класса FFI по необходимости. Заголовочные файлы могут быть расширены специальными объявлениями FFI_SCOPE (например, #define FFI_SCOPE "foo"; скоуп по умолчанию — «C») и загружены методом FFI::load() во время предзагрузки. Это приведёт к созданию постоянных привязок, которые будут доступны для всех запросов через метод FFI::scope() . Более подробно читайте на странице Простые примеры использования класса FFI.

В один и тот же скоуп можно предзагрузить несколько заголовочных файлов.

Обзор класса

final class FFI {
/* Константы */
public const int __BIGGEST_ALIGNMENT__ ;
/* Методы */
public static function addr (FFI\CData &$ptr): FFI\CData
public static function alignof (FFI\CData |FFI\CType &$ptr): int
public static function arrayType (FFI\CType $type, array $dimensions): FFI\CType
public function cast (FFI\CType |string $type, FFI\CData |int |float |bool |null &$ptr): ? FFI\CData
public static function cdef (string $code = "", ? string $lib = null ): FFI
public static function free (FFI\CData &$ptr): void
public static function isNull (FFI\CData &$ptr): bool
public static function load (string $filename): ? FFI
public static function memcmp (string |FFI\CData &$ptr1, string |FFI\CData &$ptr2, int $size): int
public static function memcpy (FFI\CData &$to, FFI\CData |string &$from, int $size): void
public static function memset (FFI\CData &$ptr, int $value, int $size): void
public function new (FFI\CType |string $type, bool $owned = true , bool $persistent = false ): ? FFI\CData
public static function scope (string $name): FFI
public static function sizeof (FFI\CData |FFI\CType &$ptr): int
public static function string (FFI\CData &$ptr, ? int $size = null ): string
public function type (string $type): ? FFI\CType
public static function typeof (FFI\CData &$ptr): FFI\CType
}

Предопределённые константы

FFI::__BIGGEST_ALIGNMENT__

Содержание

  • 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

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /