Gestionnaire de données C

(PHP 7 >= 7.4.0, PHP 8)

Introduction

Les objets FFI\CData peuvent ĂȘtre utilisĂ©s de diffĂ©rentes maniĂšres, comme des donnĂ©es PHP normales :

  • Les donnĂ©es C de type scalaire peuvent ĂȘtre lues et assignĂ©es via la propriĂ©tĂ© $cdata, par exemple. $x = FFI::new('int'); $x->cdata = 42;
  • Les champs de type struct et union peuvent ĂȘtre accĂ©dĂ©s comme des propriĂ©tĂ©s d'objets PHP ordinaires, par exemple $cdata->field
  • Les Ă©lĂ©ments d'un tableau C sont accessibles comme les Ă©lĂ©ments d'un tableau PHP, par exemple. $cdata[$offset]
  • Les tableaux C peuvent ĂȘtre itĂ©rĂ©s en utilisant des instructions foreach.
  • Les tableaux C peuvent ĂȘtre utilisĂ©s comme arguments de count().
  • Les pointeurs C peuvent ĂȘtre dĂ©rĂ©fĂ©rencĂ©s comme des tableaux, par exemple $cdata[0]
  • Les pointeurs C peuvent ĂȘtre comparĂ©s Ă  l'aide d'opĂ©rateurs de comparaison ordinaires (<, <=, ==, !=, >=, >).
  • Les pointeurs C peuvent ĂȘtre incrĂ©mentĂ©s et dĂ©crĂ©mentĂ©s Ă  l'aide des opĂ©rations ordinaires +/-/++/--, par exemple $cdata += 5
  • Les pointeurs C peuvent ĂȘtre soustraits d'un autre Ă  l'aide d'opĂ©rations ordinaires -.
  • Les pointeurs C vers des fonctions peuvent ĂȘtre appelĂ©s comme une fermeture PHP classique, par exemple $cdata()
  • Toute donnĂ©e C peut ĂȘtre dupliquĂ©e en utilisant l'opĂ©rateur clone, par exemple $cdata2 = clone $cdata;
  • Toutes les donnĂ©es C peuvent ĂȘtre visualisĂ©es Ă  l'aide de var_dump(), print_r(), etc.
  • FFI\CData peut maintenant ĂȘtre attribuĂ© Ă  des structures et des champs Ă  partir de PHP 8.3.0.

Note: Les limitations notables sont que les instances de FFI\CData ne supportent pas les fonctions isset(), empty() et unset(), et que les structs et unions C enveloppés n'implémentent pas Traversable.

Synopsis de la classe

namespace FFI;
final class CData {
}

Historique

Version Description
8.3.0 FFI\CData peut maintenant ĂȘtre attribuĂ© Ă  des structures et des champs.
add a note

User Contributed Notes

There are no user contributed notes for this page.