|
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | | -<!-- EN-Revision: 46a9cdd2dbef4ec89bf65fad9930e2feb78bbb98 Maintainer: leonardolara Status: ready --><!-- CREDITS: athos-ribeiro --> |
3 | | - |
4 | | -<book xml:id="book.ffi" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| 2 | +<!-- EN-Revision: e14fdcab82e89bfb4ee221b1de9f4764c93abcf5 Maintainer: leonardolara Status: ready --> |
| 3 | +<!-- CREDITS: athos-ribeiro --> |
| 4 | +<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="book.ffi"> |
5 | 5 | <?phpdoc extension-membership="bundled" ?> |
6 | 6 | <title>Interface de função externa</title> |
7 | 7 | <titleabbrev>FFI</titleabbrev> |
8 | 8 |
|
9 | 9 | <preface xml:id="intro.ffi"> |
10 | 10 | &reftitle.intro; |
11 | | - <para> |
| 11 | + <simpara> |
12 | 12 | Esta extensão permite o carregamento de bibliotecas compartilhadas (<filename>.DLL</filename> ou |
13 | 13 | <filename>.so</filename>), a chamada de funções escritas em C e o acesso à estruturas de dados de C |
14 | 14 | em PHP puro, sem a necessidade de maiores conhecimentos da API de extensões do Zend, e |
15 | 15 | sem a necessidade de aprender uma terceira linguagem "intermediária". |
16 | 16 | A API pública é implementada como uma única classe <classname>FFI</classname> com |
17 | 17 | diversos métodos estáticos (alguns deles podem ser chamados dinamicamente) e |
18 | 18 | métodos de objetos sobrecarregados, que realizam a interação com os dados em C. |
19 | | - </para> |
| 19 | + </simpara> |
20 | 20 | <caution> |
21 | | - <para> |
| 21 | + <simpara> |
22 | 22 | A FFI é perigosa, visto que permite a interface com o sistema em um nível muito baixo. |
23 | 23 | A extensão FFI deve ser usada apenas por desenvolvedores que possuam experiência com C |
24 | 24 | e com as APIs de C utilizadas. Para minimizar o risco, a utilização da API da FFI pode ser restringida |
25 | 25 | com a opção <link linkend="ini.ffi.enable">ffi.enable</link> do &php.ini;. |
26 | | - </para> |
| 26 | + </simpara> |
27 | 27 | </caution> |
28 | 28 | <note> |
29 | | - <para> |
| 29 | + <simpara> |
30 | 30 | A extensão FFI não torna a API de extensão clássica do PHP obsoleta; ela é apenas |
31 | 31 | fornecida para interface ad-hoc com funções e estruturas de dados em C. |
32 | | - </para> |
| 32 | + </simpara> |
33 | 33 | </note> |
34 | 34 | <tip> |
35 | | - <para> |
| 35 | + <simpara> |
36 | 36 | Atualmente, acessar estruturas de dados com a FFI é significativamente mais lento (aproximadamente 2 vezes) |
37 | 37 | do que acessar arrays e objetos nativos de PHP. Portanto, não faz sentido utilizar |
38 | 38 | a extensão FFI para ganhos de desempenho; entretanto, pode fazer sentido utilizá-la para reduzir o |
39 | 39 | consumo de memória. |
40 | | - </para> |
| 40 | + </simpara> |
41 | 41 | </tip> |
42 | 42 | </preface> |
43 | 43 |
|
|
49 | 49 | &reference.ffi.ffi.exception; |
50 | 50 | &reference.ffi.ffi.parserexception; |
51 | 51 | </book> |
52 | | - |
53 | 52 | <!-- Keep this comment at the end of the file |
54 | 53 | Local variables: |
55 | 54 | mode: sgml |
|
0 commit comments