PHP Conference Nagoya 2025

FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::castRealiza um conversão de tipo C

Descrição

public FFI::cast(FFI\CType|string $type, FFI\CData|int|float|bool|null &$ptr): ?FFI\CData

FFI::cast() cria um novo objeto FFI\CData, que referencia a mesma estrutura de dados C, mas é associado com um tipo diferente. O objeto resultante não detém o dado C, e o ponteiro de origem ptr precisa sobreviver ao resultado. O tipo C pode ser especificado como uma string com qualquer declaração de tipo C válida ou como objeto FFI\CType, criado antes. Qualquer tipo declarado para a instância é permitido.

Parâmetros

type

Uma declaração válida em C como uma string ou uma instância de FFI\CType que já tenha sido criada.

ptr

O identificador do ponteiro para uma estrutura de dados C.

Valor Retornado

Retorna o objeto FFI\CData recentemente criado.

Registro de Alterações

Versão Descrição
8.3.0 Chamar FFI::cast() estaticamente agora foi descontinuado.

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
-3
Yaner
2 years ago
For example, stdlib.h headfile defines a function called "system()" in Linux: extern int system (const char *__command) __wur;
And we can call it using FFI extension:

<?php
$ffi_obj
= FFI::cdef('int system(char *command);')
$ffi_obj->system('whoami');
?>

Then execute the php script as if we were calling the real C `system()`:

$ whoami
> root
$ php demo.php
> root
To Top