|
| 1 | +<?xml version="1.0" encoding="utf-8"?> |
| 2 | +<!-- $Revision$ --> |
| 3 | +<!-- EN-Revision: 46a9cdd2dbef4ec89bf65fad9930e2feb78bbb98 Maintainer: nsfisis Status: ready --> |
| 4 | + |
| 5 | +<book xml:id="book.ffi" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| 6 | + <?phpdoc extension-membership="bundled" ?> |
| 7 | + <title>外部関数インターフェース</title> |
| 8 | + <titleabbrev>FFI</titleabbrev> |
| 9 | + |
| 10 | + <preface xml:id="intro.ffi"> |
| 11 | + &reftitle.intro; |
| 12 | + <para> |
| 13 | + この拡張は、Zend 拡張 API の深い知識が無くとも、あるいは第三の中間言語を学ぶことをせずとも、 |
| 14 | + 純粋な PHP で共有ライブラリ (<filename>.DLL</filename> または <filename>.so</filename>) |
| 15 | + を読み込んだり、C の関数を呼び出したり、C のデータ構造にアクセスしたりすることを |
| 16 | + 可能とします。 |
| 17 | + 公開 API は単一のクラス <classname>FFI</classname> として実装されています。 |
| 18 | + このクラスの static メソッド (そのうちのいくつかは非 static メソッドとしても呼び出せます) や |
| 19 | + オーバーロードされたオブジェクトメソッドが、実際の C のデータとのやり取りを行います。 |
| 20 | + </para> |
| 21 | + <caution> |
| 22 | + <para> |
| 23 | + FFI は、システムと低レベルでやり取りできるため危険です。 |
| 24 | + FFI 拡張は、C 言語および使用する C API についての実用的な知識を持つ開発者のみが |
| 25 | + 用いるべきです。リスクを最小化するため、FFI API の使用は |
| 26 | + <link linkend="ini.ffi.enable">ffi.enable</link> &php.ini; ディレクティブによって制限できます。 |
| 27 | + </para> |
| 28 | + </caution> |
| 29 | + <note> |
| 30 | + <para> |
| 31 | + FFI 拡張は、古くからある PHP 拡張の API を廃止しようとしているわけではなく、 |
| 32 | + C の関数やデータ構造へのアドホックなインターフェースを提供するにすぎません。 |
| 33 | + </para> |
| 34 | + </note> |
| 35 | + <tip> |
| 36 | + <para> |
| 37 | + 今のところ、FFI のデータ構造へのアクセスは、ネイティブな PHP の配列やオブジェクトへのアクセスと比べて |
| 38 | + 非常に (約 2 倍) 低速です。したがって、速度のために FFI 拡張を使うことには意味がありません。 |
| 39 | + しかし、メモリ消費を減らすために使うのは意味があるかもしれません。 |
| 40 | + </para> |
| 41 | + </tip> |
| 42 | + </preface> |
| 43 | + |
| 44 | + &reference.ffi.setup; |
| 45 | + &reference.ffi.examples; |
| 46 | + &reference.ffi.ffi; |
| 47 | + &reference.ffi.ffi.cdata; |
| 48 | + &reference.ffi.ffi.ctype; |
| 49 | + &reference.ffi.ffi.exception; |
| 50 | + &reference.ffi.ffi.parserexception; |
| 51 | +</book> |
| 52 | + |
| 53 | +<!-- Keep this comment at the end of the file |
| 54 | +Local variables: |
| 55 | +mode: sgml |
| 56 | +sgml-omittag:t |
| 57 | +sgml-shorttag:t |
| 58 | +sgml-minimize-attributes:nil |
| 59 | +sgml-always-quote-attributes:t |
| 60 | +sgml-indent-step:1 |
| 61 | +sgml-indent-data:t |
| 62 | +indent-tabs-mode:nil |
| 63 | +sgml-parent-document:nil |
| 64 | +sgml-default-dtd-file:"~/.phpdoc/manual.ced" |
| 65 | +sgml-exposed-tags:nil |
| 66 | +sgml-local-catalogs:nil |
| 67 | +sgml-local-ecat-files:nil |
| 68 | +End: |
| 69 | +vim600: syn=xml fen fdm=syntax fdl=2 si |
| 70 | +vim: et tw=78 syn=sgml |
| 71 | +vi: ts=1 sw=1 |
| 72 | +--> |
0 commit comments