函式名稱:FFI\CType::getPointerType()
適用版本:PHP 7.4.0 或更高版本
用法: FFI\CType::getPointerType() 函式用於獲取指定型別的指標型別。
引數:
- 無引數
返回值: 型別為 FFI\CType 的物件,表示指定型別的指標型別。
示例:
<?php
$ffi = FFI::cdef("
typedef struct {
int x;
int y;
} Point;
Point* create_point(int x, int y);
void free_point(Point* point);
", "libpoint.so");
$pointType = FFI::typeof("Point");
$pointerType = $pointType->getPointerType();
$point = $ffi->create_point(10, 20);
$pointer = FFI::cast($pointerType, $point);
echo "X: " . $pointer->x . "\n";
echo "Y: " . $pointer->y . "\n";
$ffi->free_point($pointer);
在上面的示例中,我們首先定義了一個 C 結構體 Point,並在 C 庫中宣告瞭兩個函式 create_point 和 free_point。然後,我們使用 FFI 擴充套件載入了這個 C 庫。
接下來,我們使用 FFI::typeof() 函式獲取 Point 結構體的型別,並使用 getPointerType() 函式獲取指標型別。然後,我們使用 create_point 函式建立了一個 Point 物件,並使用 FFI::cast() 函式將其轉換為指標型別。
最後,我們可以透過指標訪問 Point 結構體的成員變數,並列印出其 x 和 y 值。最後,我們使用 free_point 函式釋放了建立的 Point 物件。