LonghornPHP 2026

Доступ к данным C

(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.

Обзор класса

namespace FFI;
final class CData {
}

Список изменений

Версия Описание
8.3.0 Объекты класса FFI\CData теперь разрешено присваивать структурам и полям.
Добавить

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

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