Interface de fonction étrangÚre (Foreign Function Interface)

Introduction

Cette extension permet de charger des bibliothĂšques partagĂ©es (.DLL ou .so), l'appel Ă  des fonctions C et l'accĂšs Ă  des structures de donnĂ©es C Ă  partir de PHP, sans avoir Ă  connaĂźtre l'API d'extension Zend, et sans avoir Ă  apprendre un troisiĂšme langage "intermĂ©diaire". L'API publique est implĂ©mentĂ©e sous la forme d'une classe unique FFI avec plusieurs mĂ©thodes statiques (certaines d'entre elles peuvent ĂȘtre appelĂ©es dynamiquement), et des mĂ©thodes d'objet surchargĂ©es, qui effectuent l'interaction rĂ©elle avec les donnĂ©es C.

Attention

L'extension FFI est dangereuse, car elle permet de s'interfacer avec le systĂšme Ă  un niveau trĂšs bas. Elle ne doit ĂȘtre utilisĂ©e que par des dĂ©veloppeurs ayant une connaissance pratique du langage C et des API C utilisĂ©es. Pour minimiser les risques, l'utilisation de l'API FFI peut ĂȘtre restreinte avec la directive php.ini ffi.enable.

Note: L'extension FFI ne rend pas obsolÚte l'API d'extension classique de PHP; elle est simplement fournie pour l'interfaçage ad-hoc avec des fonctions et des structures de données C.

Astuce

Actuellement, l'accĂšs aux structures de donnĂ©es FFI est significativement (environ 2 fois) plus lent que l'accĂšs aux tableaux et objets natifs de PHP. Par consĂ©quent, il n'est pas utile d'utiliser l'extension FFI pour la vitesse; cependant, il peut ĂȘtre judicieux de l'utiliser pour rĂ©duire la mĂ©moire.

add a note

User Contributed Notes 1 note

up
0
Nathaniel Sabanski ¶
3 years ago
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=1