Main interface to C code and data

(PHP 7 >= 7.4.0, PHP 8)

Introduction

Objects of this class are created by the factory methods FFI::cdef() , FFI::load() or FFI::scope() . Defined C variables are made available as properties of the FFI instance, and defined C functions are made available as methods of the FFI instance. Declared C types can be used to create new C data structures using FFI::new() and FFI::type() .

FFI definition parsing and shared library loading may take significant time. It is not useful to do it on each HTTP request in a Web environment. However, it is possible to preload FFI definitions and libraries at PHP startup, and to instantiate FFI objects when necessary. Header files may be extended with special FFI_SCOPE defines (e.g. #define FFI_SCOPE "foo"; the default scope is "C") and then loaded by FFI::load() during preloading. This leads to the creation of a persistent binding, that will be available to all the following requests through FFI::scope() . Refer to the complete PHP/FFI/preloading example for details.

It is possible to preload more than one C header file into the same scope.

Class synopsis

final class FFI {
/* Constants */
public const int __BIGGEST_ALIGNMENT__ ;
/* Methods */
public static addr (FFI\CData &$ptr): FFI\CData
public static alignof (FFI\CData |FFI\CType &$ptr): int
public static arrayType (FFI\CType $type, array $dimensions): FFI\CType
public cast (FFI\CType |string $type, FFI\CData |int |float |bool |null &$ptr): ? FFI\CData
public static cdef (string $code = "", ? string $lib = null ): FFI
public static free (FFI\CData &$ptr): void
public static isNull (FFI\CData &$ptr): bool
public static load (string $filename): ? FFI
public static memcmp (string |FFI\CData &$ptr1, string |FFI\CData &$ptr2, int $size): int
public static memcpy (FFI\CData &$to, FFI\CData |string &$from, int $size): void
public static memset (FFI\CData &$ptr, int $value, int $size): void
public new (FFI\CType |string $type, bool $owned = true , bool $persistent = false ): ? FFI\CData
public static scope (string $name): FFI
public static sizeof (FFI\CData |FFI\CType &$ptr): int
public static string (FFI\CData &$ptr, ? int $size = null ): string
public type (string $type): ? FFI\CType
public static typeof (FFI\CData &$ptr): FFI\CType
}

Predefined Constants

FFI::__BIGGEST_ALIGNMENT__

Table of Contents

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes

There are no user contributed notes for this page.

AltStyle によって変換されたページ (->オリジナル) /