Доступ к данным C
(PHP 7 >= 7.4.0)
Введение
Объекты FFI\CData могут использоваться множеством разных способов как обычные данные PHP:
-
Данные C скалярных типов могут читаться и присваиваться
через свойство $cdata:
$x = FFI::new('int'); $x->cdata = 42; -
Поля структур(struct) и объединений(union) C доступны
как обычные свойства объекта PHP:
$cdata->field -
Доступ к элементам массивов C происходит так же, как доступ
к элементам обычного массива PHP:
$cdata[$offset] - Массивы C можно перебирать с помощью foreach.
- Для массивов C можно можно использовать функцию count().
-
Указатели C могут быть разыменованы как массив:
$cdata[0] -
Указатели C можно сравнивать обычными операторами
сравнения (
<,<=,==,!=,>=,>). -
Для указателей C можно использовать операции инкремента
и декремента
+/-/++/–-:$cdata += 5 -
Указатели C можно вычитать друг из друга с помощью
операции
-. -
Указатели на функции можно вызывать как обычные
замыкания PHP:
$cdata() -
Любые данные C можно клонировать с помощью
clone:
$cdata2 = clone $cdata; - Любые данные C можно визуализировать с помощью var_dump(), print_r(), и т.д.
Замечание: Обратите внимание, что для экземпляров FFI\CData не поддерживаются функции isset(), empty() и unset(). А для тех, что оборачивают структуры и объединения не реализован интерфейс Traversable.
Обзор классов
FFI\CData
{
}