(PHP 7 >= 7.4.0, PHP 8)
Objetos FFI\CData podem ser usados de várias maneiras como dados comuns do PHP:
Dados em C de tipos escalares podem ser lidos e atribuídos através da propriedade $cdata, por exemplo,
$x = FFI::new('int'); $x->cdata = 42;
Campos de estruturas e uniões em C podem ser acessados como uma propriedade comum de objeto PHP, por exemplo,
$cdata->field
Elementos de array em C podem ser acessados como elementos de array comuns do PHP, por exemplo,
$cdata[$offset]
Arrays em C podem ser iterados usando instruções foreach.
Arrays em C podem ser usados como argumentos de count().
Ponteiros em C podem ser desreferenciados como arrays, por exemplo, $cdata[0]
Ponteiros em C podem ser comparados usando operadores comuns de comparação (<,
<=, ==, !=, >=, >).
Ponteiros em C podem ser incrementados e decrementads usando as operações comuns +/-/
++/--, por exemplo, $cdata += 5
Ponteiros em C podem ser subtraídos de outros usando operações normais de subtração -.
Ponteiros para funções em C podem ser chamados como closures normais de PHP, por exemplo, $cdata()
Qualquer dado em C pode ser duplicado usando o operador clone,
por exemplo, $cdata2 = clone $cdata;
Qualquer dado em C pode ser visualizado usando var_dump(), print_r() etc.
FFI\CData agora pode ser atribuído a estruturas e campos a partir do PHP 8.3.0.
Nota:
Limitações notáveis são: instâncias FFI\CData não suportam isset(), empty() e unset(); e estruturas e uniões C encapsuladas não implementam Traversable.
| Versão | Descrição |
|---|---|
| 8.3.0 | FFI\CData agora pode ser atribuído a estruturas e campos. |