php-doc-en/reference/ffi/book.xml
Fabien Salathe 8b0e03372d
Remove "experimental" warning from Foreign Function Interface
Foreign Function Interface (FFI) has been introduced in 2019 (PHP 7.4) and the API didn't change since then, it should probably be considered safe to use it.

Closes GH-1495. Closes GH-1499.
2022-04-02 18:13:26 +02:00

73 lines
2.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<book xml:id="book.ffi" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<?phpdoc extension-membership="bundled" ?>
<title>Foreign Function Interface</title>
<titleabbrev>FFI</titleabbrev>
<preface xml:id="intro.ffi">
&reftitle.intro;
<para>
This extension allows the loading of shared libraries (<filename>.DLL</filename> or
<filename>.so</filename>), calling of C functions and accessing of C data structures
in pure PHP, without having to have deep knowledge of the Zend extension API, and
without having to learn a third “intermediate” language.
The public API is implemented as a single class <classname>FFI</classname> with
several static methods (some of them may be called dynamically), and overloaded object
methods, which perform the actual interaction with C data.
</para>
<caution>
<para>
FFI is dangerous, since it allows to interface with the system on a very low level.
The FFI extension should only be used by developers having a working knowledge of C
and the used C APIs. To minimize the risk, the FFI API usage may be restricted
with the <link linkend="ini.ffi.enable">ffi.enable</link> &php.ini; directive.
</para>
</caution>
<note>
<para>
The FFI extension does not render the classic PHP extension API obsolete; it is merely
provided for ad-hoc interfacing with C functions and data structures.
</para>
</note>
<tip>
<para>
Currently, accessing FFI data structures is significantly (about 2 times) slower
than accessing native PHP arrays and objects. Therefore, it makes no sense to use
the FFI extension for speed; however, it may make sense to use it to reduce memory
consumption.
</para>
</tip>
</preface>
&reference.ffi.setup;
&reference.ffi.constants;
&reference.ffi.examples;
&reference.ffi.ffi;
&reference.ffi.ffi.cdata;
&reference.ffi.ffi.ctype;
&reference.ffi.ffi.exception;
&reference.ffi.ffi.parserexception;
</book>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->