FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::castПроизводит преобразование типа C

Описание

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

FFI::cast() создаёт новый объект класса FFI\CData, который указывает на ту же структуру C, но ассоциирован с другим типом. Полученный объект не становится владельцем данных, так что исходный указатель ptr должен оставаться живым дольше полученного объекта. Тип C должен быть задан как строка, содержащая имя любого корректного типа С, либо как объект FFI\CType. Если метод вызывается статически, то можно использовать только предопределённые имена типов С (например, int, char, etc.); если метод вызывается как метод объекта, то допустимы любые определённые для него типы.

Список параметров

type

Строка с именем типа С или объект класса FFI\CType.

ptr

Дескриптор указателя на структуру данных С.

Возвращаемые значения

Возвращает новый объект FFI\CData.

add a note

User Contributed Notes 1 note

up
-1
Yaner
4 months 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