Quickstart from Rasmus Lerdorf's 25 years of PHP talk.
<?php
$ffi = FFI::cdef(
"int printf(const char *format, ...);",
"libc.so.6");
$ffi->printf("Hello %s!\n", "world");
?>
Requires ffi.enable=1FFI
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
FFI
Референца за `book.ffi.php` со подобрена типографија и навигација.
Интерфејс за странски функции
Вовед
Овој екстензија овозможува вчитување на споделени библиотеки (.DLL or .so"), повикување на C функции и пристап до C структури на податоци во чист PHP, без потреба од длабоко познавање на Zend extension API, и без потреба да се учи трет „среден“ јазик. Јавниот API е имплементиран како една класа FFI со неколку статични методи (некои од нив може да се повикаат динамички), и преоптоварени методи на објекти, кои ја вршат вистинската интеракција со C податоци.
FFI е опасен, бидејќи овозможува интеракција со системот на многу ниско ниво. FFI екстензијата треба да ја користат само програмери кои имаат работно познавање на C и користените C API. За да се минимизира ризикот, употребата на FFI API може да биде ограничена со ffi.enable php.ini directive.
Забелешка: FFI екстензијата не го прави класичниот PHP екстензија API застарен; таа е само обезбедена за ad-hoc интеракција со C функции и структури на податоци.
Во моментов, пристапот до FFI структури на податоци е значително (околу 2 пати) побавен од пристапот до нативни PHP низи и објекти. Затоа, нема смисла да се користи FFI екстензијата за брзина; сепак, може да има смисла да се користи за намалување на потрошувачката на меморија.
- Installing/Configuring
- Примери
- FFI — Главен интерфејс до C код и податоци
- FFI::addr — Создава неподдржан покажувач кон C податоци
- FFI::alignof — Го добива порамнувањето
- FFI::arrayType — Динамички конструира нов тип на C низа
- FFI::cast — Извршува C префрлање на тип
- FFI::cdef — Создава нов FFI објект
- FFI::free — Ослободува неподдржана структура на податоци
- FFI::isNull — Проверува дали FFI\CData е нул покажувач
- FFI::load — Вчитува C декларации од C хедр датотека
- FFI::memcmp — Споредува мемориски области
- FFI::memcpy — Копира една мемориска област во друга
- FFI::memset — Пополнува мемориска област
- FFI::new — Пополнува област во меморијата
- FFI::scope — Создава C структура на податоци
- FFI::sizeof — Инстанцира FFI објект со C декларации анализирани при претходно вчитување
- FFI::string — Ја добива големината на C податоци или типови
- FFI::type — Создава PHP стринг од област во меморијата
- FFI::typeof — Создава FFI\CType објект од C декларација
- FFI\CData — C рачки за податоци
- FFI\CType — C рачки за тип
- FFI\CType::getAlignment — Опис
- FFI\CType::getArrayElementType — Опис
- FFI\CType::getArrayLength — Опис
- FFI\CType::getAttributes — Опис
- FFI\CType::getEnumKind — Опис
- FFI\CType::getFuncABI — Опис
- FFI\CType::getFuncParameterCount — Ја добива FFI\CType од FFI\CData
- FFI\CType::getFuncParameterType — Враќа број на параметри од тип на функција
- FFI\CType::getFuncReturnType — Опис
- FFI\CType::getKind — Опис
- FFI\CType::getName — Опис
- FFI\CType::getPointerType — Опис
- FFI\CType::getSize — Опис
- FFI\CType::getStructFieldNames — Опис
- FFI\CType::getStructFieldOffset — Опис
- FFI\CType::getStructFieldType — Опис
- FFI\Exception — FFI исклучоци
- FFI\ParserException — FFI парсер исклучоци