FFI 소개

경고 이 확장은 실험적입니다. 함수의 이름을 포함한 이 확장의 동작과 이 확장을 둘러싼 기타 문서는 PHP의 향후 릴리스에서 예고 없이 변경될 수 있습니다. 이 확장은 사용자의 책임하에 사용해야 합니다.

이 확장을 사용하면 공유 라이브러리(.DLL 또는 .so)를 로드하고, C 함수를 호출하고, 순수 PHP에서 C 데이터 구조에 액세스할 수 있습니다. Zend 확장 API에 대한 깊은 지식이 없어도, 세 번째 "중급" 언어를 배울 필요도 없습니다. 공개 API는 여러 정적 메서드(일부는 동적으로 호출될 수 있음)와 C 데이터와의 실제 상호 작용을 수행하는 오버로드된 개체 메서드가 있는 단일 클래스 FFI로 구현됩니다.

주의 FFI는 매우 낮은 수준에서 시스템과 인터페이스할 수 있으므로 위험합니다. FFI 확장은 C 및 사용된 C API에 대한 작업 지식이 있는 개발자만 사용해야 합니다. 위험을 최소화하기 위해 ffi.enable php.ini 지시문으로 FFI API 사용을 제한할 수 있습니다.

메모: FFI 확장은 고전적인 PHP 확장 API를 쓸모없게 만들지 않습니다. C 함수 및 데이터 구조와의 임시 인터페이스를 위해 제공될 뿐입니다.

현재 FFI 데이터 구조에 액세스하는 것은 기본 PHP 배열 및 개체에 액세스하는 것보다 훨씬(약 2배) 느립니다. 따라서 속도를 위해 FFI 확장을 사용하는 것은 의미가 없습니다. 그러나 메모리 소비를 줄이기 위해 사용하는 것이 합리적일 수 있습니다.