'Is it possible to pass PHP variable to FFI C function?

I want to explore PHP variables on C level with FFI. Is it possible?
I wrote code, but it doesn't work correctly.

php_ffi.cpp

#include "zend_types.h"
#include "main/php.h"

int main() {}

extern "C" void print_zval_info(zval zv) {
    printf("type: %d\n", Z_TYPE(zv));
}

test.php

<?php

$cpp_ffi = \FFI::cdef(
    "void print_zval_info(zval zv);",
    __DIR__ . "/php_ffi.so");

$a = 1;
$cpp_ffi->print_zval_info($a);

How to reproduce:

git clone [email protected]:php/php-src.git && cd php-src
./buildconf
./configure --enable-debug --with-ffi
g++ -g -fPIC -shared -I . -I Zend -I main -I TSRM php_ffi.cpp -o php_ffi.so
php test.php


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source