ffi-php-examples-complete-2

  • Examples
  • A Complete PHP/FFI/preloading Example

  • A Complete PHP/FFI/preloading Example
  • A Complete PHP/FFI/preloading Example

    A Complete PHP/FFI/preloading Example

    php.ini

    ffi.enable=preload
    opcache.preload=preload.php
    

    preload.php

    <?php
    FFI
    ::load(__DIR__ "/dummy.h");
    opcache_compile_file(__DIR__ "/dummy.php");
    ?>

    dummy.h

    #define FFI_SCOPE "DUMMY"
    #define FFI_LIB "libc.so.6"
     
    int printf(const char *format, ...);
    

    dummy.php

    <?php
    final class Dummy {
        private static 
    $ffi null;
        function 
    __construct() {
            if (
    is_null(self::$ffi)) {
                
    self::$ffi FFI::scope("DUMMY");
            }
        }
        function 
    printf($format, ...$args) {
           return (int)
    self::$ffi->printf($format, ...$args);
        }
    }
    ?>

    test.php

    <?php
    $d 
    = new Dummy();
    $d->printf("Hello %s!\n""world");
    ?>