<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Usando Extensões</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="Zend API: Hackeando o Núcleo do PHP" HREF="zend.html"><LINK REL="PREVIOUS" TITLE="Creating Extensions" HREF="zend.creating.html"><LINK REL="NEXT" TITLE="Resolução de Problemas" HREF="zend.troubleshooting.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="zend.creating.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Capítulo 46. Zend API: Hackeando o Núcleo do PHP</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="zend.troubleshooting.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="zend.using" >Usando Extensões</A ></H1 ><P > Dependendo de processo de compilação que você escolheu, você deve ter no final ou um binário novo do PHP para ser montado com o seu servidor Web (ou executar como CGI), ou com um .so (objeto compartilhado). Se você compilou o arquivo de exemplo <TT CLASS="filename" >first_module.c</TT > como um objeto compartilhado, o arquivo resultante deve ser <TT CLASS="filename" >first_module.so</TT >. Para usá-lo, você tem que copiá-lo para um lugar onde ele seja acessível pelo PHP. Um procedimento simples de teste é copiá-lo para o seu diretório <TT CLASS="filename" >htdocs</TT > e testar com o código fonte em <A HREF="zend.using.html#example.testfile" >Exemplo 46-3</A >. Se você compilou a sua extensão estaticamente no binário do PHP, omita a chamada à função <B CLASS="function" >dl()</B >, já que funcionalidade do módulo está disponível instantaneamente para seus scripts. <DIV CLASS="warning" ><P ></P ><TABLE CLASS="warning" BORDER="1" WIDTH="100%" ><TR ><TD ALIGN="CENTER" ><B >Atenção</B ></TD ></TR ><TR ><TD ALIGN="LEFT" ><P > Por razões de segurança, você <SPAN CLASS="emphasis" ><I CLASS="emphasis" >não deve</I ></SPAN > colocar seus módulos dinâmicos em diretórios acessíveis publicamente. Embora seja <SPAN CLASS="emphasis" ><I CLASS="emphasis" >possível</I ></SPAN > e simplificar os testes, você deve colocá-los em um diretório separado em ambientes de produção. </P ></TD ></TR ></TABLE ></DIV > </P ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="example.testfile" ></A ><P ><B >Exemplo 46-3. Um arquivo de teste para first_module.so.</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /><br /></font><font color="#FF8000">// remove as barras de comentário se necessário<br />// dl("first_module.so");<br /><br /></font><font color="#0000BB">$param </font><font color="#007700">= </font><font color="#0000BB">2</font><font color="#007700">;<br /></font><font color="#0000BB">$return </font><font color="#007700">= </font><font color="#0000BB">first_module</font><font color="#007700">(</font><font color="#0000BB">$param</font><font color="#007700">);<br /><br />print(</font><font color="#DD0000">"Nós enviamos '$param' e recebemos '$return'"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ><P > Chamar esse arquivo do PHP no seu servidor web deve mostrar a saída mostrada em <A HREF="zend.using.html#fig.out-first" >Figura 46-2</A >. <DIV CLASS="figure" ><A NAME="fig.out-first" ></A ><P ><B >Figura 46-2. Saída de first_module.php.</B ></P ><P ><IMG SRC="figures/zend.02-first-module-output.png"></P ></DIV > </P ><P > Se necessário, o módulo dinâmico é carregado pela chamada da função <B CLASS="function" >dl()</B >. Essa função procura pelo objeto compartilhado especificado, carregá-o e torna suas funções disponíveis para o PHP. O módulo exporta a função <B CLASS="function" >first_module()</B >, que aceita um único parâmetro, converte-o para inteiro, e retorna o resultado da conversão. </P ><P > Se você chegou até aqui, parabéns! Você acabou de montar sua primeira extensão do PHP. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="zend.creating.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="zend.troubleshooting.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Creating Extensions</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="zend.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Resolução de Problemas</TD ></TR ></TABLE ></DIV ></BODY ></HTML >