Доступ к данным 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
{
}