🐙
【PHP FFI】【Python CFFI】C 言語の printf を使う
PHP 7.4 から FFI を通して C 言語のコードを直接使えるようになった。入門でおなじみの printf
を使ってみる。実行環境は Chromebook での Debian 12 Bookworm である。
FFI モジュールが読み込まれているかどうかは次のコマンドで確認できる
php -m | grep -i FFI
Debian の場合、php8.2-common に FFI モジュールが含まれている
test.php
<?php
$ffi = FFI::cdef(
"int printf(const char *format, ...);"
);
$ffi->printf("Hello %s!\n", "world");
ついでに Python の CFFI も試してみた。pip でのインストールは次のとおり
pip3 install cffi
test.py
from cffi import FFI
ffi = FFI()
ffi.cdef("int printf(const char *format, ...);")
clib = ffi.dlopen(None)
clib.printf(b"Hello World\n")
もしくは次のように書く
test.py
from cffi import FFI
ffi = FFI()
ffi.cdef("int printf(const char * restrict format, ...);")
clib = ffi.dlopen(None)
clib.printf(b"Hello %s\n", ffi.new("uint8_t[]", b"World"),)
Discussion