🐙

【PHP FFI】【Python CFFI】C 言語の printf を使う

2024/05/03に公開

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