International PHP Conference Munich 2024

FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::castПриводит тип C

Описание

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. Разрешён любой тип, который объявили для экземпляра.

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

type

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

ptr

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

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

Метод возвращает новый объект класса FFI\CData.

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

Версия Описание
8.3.0 Статический вызов метода FFI::cast() устарел.

add a note

User Contributed Notes 1 note

up
-3
Yaner
1 year 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