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 数据结构,但与不同的类型相关联。生成的 object 不拥有 C 数据,并且源 ptr 必须在结果中存在。C 类型可以指定为带有任何有效 C 类型声明的 string,也可以指定为之前创建的 FFI\CType 对象。允许实例中声明的任何类型。

参数

type

一个有效的 C 声明,作为 string,或 FFI\CType 的实例,该实例已创建。

ptr

指向 C 数据结构的指针的句柄。

返回值

返回新创建的 FFI\CData 对象。

变更日志

版本 描述
8.3.0 现在已弃用静态调用 FFI::cast()

添加说明

用户贡献说明 1 条说明

Yaner
1 年前
例如,stdlib.h 头文件在 Linux 中定义了一个名为“system()”的函数:extern int system (const char *__command) __wur;
我们可以使用 FFI 扩展调用它

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

然后像调用真正的 C `system()` 一样执行 php 脚本

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