Slide 39
Slide 39 text
FFI
で ポインタを ZendEngine
内の構造体ポインタへキャスト
PHP
処理系は C
で書かれている
C
の構造体定義は FFI
で読める
process_vm_readv(2)
で実行中の処理系内部データをコピー
してきたバッファのポインタを PHP
構造体へのポインタにキ
ャスト
public function readAs(
string $type,
CData $cdata
): CastedCData {
//
処理系のヘッダを読み込み
$ffi = $this->loadHeader($this->php_version);
return new CastedCData(
$cdata,
$ffi->cast($type, $cdata)
?? throw new CannotCastCDataException(
'cannot cast a C Data'
),
);
}