mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
77 lines
3.3 KiB
XML
77 lines
3.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: e14fdcab82e89bfb4ee221b1de9f4764c93abcf5 Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="book.ffi">
|
||
<?phpdoc extension-membership="bundled" ?>
|
||
<title>Интерфейс внешней функции (Foreign Function Interface)</title>
|
||
<titleabbrev>FFI</titleabbrev>
|
||
|
||
<preface xml:id="intro.ffi">
|
||
&reftitle.intro;
|
||
<simpara>
|
||
Модуль умеет загружать общие библиотеки (<filename>.DLL</filename>
|
||
или <filename>.so</filename>), вызывать C-функции и получать
|
||
доступ с структурам языка C из PHP без глубокого изучения
|
||
API модулей Zend и стороннего «промежуточного» языка.
|
||
Публичный API реализовали как единственный класс <classname>FFI</classname>
|
||
с набором статических методов (часть методов
|
||
вызывается динамически) и переопределёнными методами
|
||
объекта, которые фактически взаимодействуют с данными языка C.
|
||
</simpara>
|
||
<caution>
|
||
<simpara>
|
||
Модуль FFI довольно опасен, поскольку разрешает
|
||
взаимодействовать с системой на низком уровне.
|
||
С модулем FFI должны работать только те разработчики,
|
||
которые знакомы с языком С и умеют работать с API языка.
|
||
Чтобы уменьшить риски, модуль запрещают
|
||
директивой <link linkend="ini.ffi.enable">ffi.enable</link>
|
||
в файле &php.ini;.
|
||
</simpara>
|
||
</caution>
|
||
<note>
|
||
<simpara>
|
||
Модуль FFI не делает классический API модулей PHP устаревшим;
|
||
модуль разработали для взаимодействия с функциями и структурами данных
|
||
языка C.
|
||
</simpara>
|
||
</note>
|
||
<tip>
|
||
<simpara>
|
||
Доступ к структурам данных модуля FFI примерно в 2 раза
|
||
медленнее, чем доступ к объектам и массивам PHP. Поэтому
|
||
нет повода использовать FFI для ускорения;
|
||
однако с модулем работают, чтобы сократить потребление памяти.
|
||
</simpara>
|
||
</tip>
|
||
</preface>
|
||
|
||
&reference.ffi.setup;
|
||
&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
|
||
-->
|