(PHP 7 >= 7.4.0, PHP 8)
С объектами 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 вычитают стандартной операцией -.
Указатели C на функции вызывают как стандартные PHP-замыкания: $cdata()
Данные C клонируют оператором clone:
$cdata2 = clone $cdata;
Данные языка C визуализируют через функции var_dump(), print_r(), и т. д.
Начиная с PHP 8.3.0 объекты класса FFI\CData разрешено присваивать структурам и полям.
Замечание:
Обратите внимание, что экземпляры класса FFI\CData не поддерживают языковые конструкции isset(), empty() и unset(), и что обёрнутые структуры и объединения C не реализуют интерфейс Traversable.
| Версия | Описание |
|---|---|
| 8.3.0 | Объекты класса FFI\CData теперь разрешено присваивать структурам и полям. |