PHP Conference Japan 2024

FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::cast執行 C 類型轉換

說明

FFI::cast() 會建立一個新的 FFI\CData 物件,它參照相同的 C 資料結構,但與不同的類型關聯。產生的物件並不擁有 C 資料,且來源 ptr 必須在結果存在期間持續有效。C 類型可以指定為任何有效 C 類型宣告的 字串,或先前建立的 FFI\CType 物件。允許任何為實例宣告的類型。

參數

type

一個有效的 C 宣告 字串,或一個已建立的 FFI\CType 實例。

ptr

指向 C 資料結構之指標的控制代碼。

返回值

返回新建立的 FFI\CData 物件。

更新日誌

版本 說明
8.3.0 靜態呼叫 FFI::cast() 現已棄用。

新增註釋

使用者貢獻的註釋 1 則註釋

-3
Yaner
2 年前
例如,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');
?>

然後執行 php 腳本,就像我們在呼叫真正的 C `system()` 一樣

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