Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 11995

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Integração PHP / Java</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="Referência das Funções"
HREF="funcref.html"><LINK
REL="PREVIOUS"
TITLE="ircg_whois"
HREF="function.ircg-whois.html"><LINK
REL="NEXT"
TITLE="java_last_exception_clear"
HREF="function.java-last-exception-clear.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="reference"
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="function.ircg-whois.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="function.java-last-exception-clear.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="reference"
><A
NAME="ref.java"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
>LXXII. Integração PHP / Java</H1
><DIV
CLASS="PARTINTRO"
><A
NAME="AEN99493"
></A
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.intro"
>Introdução</A
></H1
><P
>&#13;     Existem duas maneira possíveis para integrar PHP com Java: você pode ou
     <A
HREF="ref.java.html#java.servlet"
>integrar o PHP a um ambiente Java Servlet
     </A
>, que é a solução mais estável e eficiente, ou integrar suporte
     Java ao PHP. O primeiro está disponível por um módulo SAPI que faz
     a interface com o servidor Servlet, o outro faz isso por meio
     dessa extensão Java.
    </P
><P
>&#13;     A extensão Java prove meios simples e eficientes para criar e
     invocar métodos em objetos Java a partir do PHP. A JVM é criada usand JNI,
     e tudo roda no mesmo processo.
    </P
><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
>Este módulo é
 <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>EXPERIMENTAL</I
></SPAN
>. Isso quer dizer que o comportamento neste módulo ---
 incluindo suas funções e seus nomes, e TUDO mais que está documentado
 sobre esse módulo --- poderá mudar em futuras versões do PHP, SEM QUALQUER NOTIFICAÇÃO.
 Esteja avisado, e use este módulo por sua própria conta e risco.</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.requirements"
>Dependências</A
></H1
><P
>&#13;     Você precisa de uma Java VM instalada na sua máquina para usar essa extensão.
    </P
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.installation"
>Instalação</A
></H1
><P
>&#13;  Esta estensão <A
HREF="http://pecl.php.net"
TARGET="_top"
>PECL</A
>
 não vem compilada com o PHP.
  
 </P
><P
>&#13;  No PHP 4, os fontes desta estensão <ACRONYM
CLASS="acronym"
>PECL</ACRONYM
>
 podem ser encontrados no diretório <TT
CLASS="filename"
>ext/</TT
> ou dentro dos fontes do
 PHP ou no link <ACRONYM
CLASS="acronym"
>PECL</ACRONYM
> acima.
  Para usar essas funções você deve compilar o PHP com suporte à Java usando
  a opção <CODE
CLASS="option"
>--with-java[=DIR]</CODE
> onde DIR
  aponta para o diretório base de onde o JDK está instalado. Essa extensão só pode
  ser compilada como uma extensão compartilhada. Outras extensões podem ser
  encontradas em <TT
CLASS="filename"
>php-src/ext/java/README</TT
>.
 </P
><P
>&#13;  Usuário do Windows devem habilitar <TT
CLASS="filename"
>php_java.dll</TT
> no
  arquivo <TT
CLASS="filename"
>php.ini</TT
> para usar essas funções.
  No PHP esta <ACRONYM
CLASS="acronym"
>DLL</ACRONYM
> reside no
 diretório <TT
CLASS="filename"
>extensions/</TT
> junto aos binários do PHP para
 Windows.
  Você pode baixar esta extensão <ACRONYM
CLASS="acronym"
>PECL</ACRONYM
>
 <ACRONYM
CLASS="acronym"
>DLL</ACRONYM
> a apartir de <A
HREF="http://www.php.net/downloads.php"
TARGET="_top"
>&#13; downloads PHP</A
> ou em <A
HREF="http://snaps.php.net/"
TARGET="_top"
>&#13; http://snaps.php.net/</A
>.
 </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
   Para habilitar esse módulo em um ambiente Windows com o PHP &#60;=
   4.0.6, você deve colocar o arquivo <TT
CLASS="filename"
>jvm.dll</TT
> no PATH
   do seu sistema. Nenhuma DLL adicional é necessária para versões do PHP &#62; 4.0.6.
  </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.configuration"
>Configurações em execução</A
></H1
><P
>&#13;O comportamento dessas funções podem ser modificado pelas configurações do <TT
CLASS="filename"
>php.ini</TT
>.
</P
><P
>&#13; <DIV
CLASS="table"
><A
NAME="AEN99532"
></A
><P
><B
>Tabela 1. Opções de Configuração da extensão de Java</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><COL><COL><THEAD
><TR
><TH
>Nome</TH
><TH
>Valor Padrão</TH
><TH
>Alterável</TH
><TH
>Changelog</TH
></TR
></THEAD
><TBODY
><TR
><TD
>java.class.path</TD
><TD
>NULL</TD
><TD
>PHP_INI_ALL</TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
>java.home</TD
><TD
>NULL</TD
><TD
>PHP_INI_ALL</TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
>java.library.path</TD
><TD
>NULL</TD
><TD
>PHP_INI_ALL</TD
><TD
>&nbsp;</TD
></TR
><TR
><TD
>java.library</TD
><TD
>JAVALIB</TD
><TD
>PHP_INI_ALL</TD
><TD
>&nbsp;</TD
></TR
></TBODY
></TABLE
></DIV
>
 Para mais detalhes e definições das constantes
 PHP_INI_*, veja <A
HREF="ini.html"
>Apêndice H</A
>.
 </P
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.resources"
>Tipos Resource</A
></H1
><P
>Esta extensão não possui nenhum tipo resource.</P
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.constants"
>Constantes pré-definidas</A
></H1
><P
>Esta extensão não possui nenhuma constante.</P
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.examples"
>Exemplos</A
></H1
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN99572"
></A
><P
><B
>Exemplo 1. Exemplo de Java</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">// get instance of Java class java.lang.System in PHP<br /></font><font color="#0000BB">$system </font><font color="#007700">= new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.lang.System'</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// demonstrate property access<br /></font><font color="#007700">echo </font><font color="#DD0000">'Java version=' </font><font color="#007700">. </font><font color="#0000BB">$system</font><font color="#007700">-&gt;</font><font color="#0000BB">getProperty</font><font color="#007700">(</font><font color="#DD0000">'java.version'</font><font color="#007700">) . </font><font color="#DD0000">'&lt;br /&gt;'</font><font color="#007700">;<br />echo </font><font color="#DD0000">'Java vendor=' </font><font color="#007700">. </font><font color="#0000BB">$system</font><font color="#007700">-&gt;</font><font color="#0000BB">getProperty</font><font color="#007700">(</font><font color="#DD0000">'java.vendor'</font><font color="#007700">) . </font><font color="#DD0000">'&lt;br /&gt;'</font><font color="#007700">;<br />echo </font><font color="#DD0000">'OS=' </font><font color="#007700">. </font><font color="#0000BB">$system</font><font color="#007700">-&gt;</font><font color="#0000BB">getProperty</font><font color="#007700">(</font><font color="#DD0000">'os.name'</font><font color="#007700">) . </font><font color="#DD0000">' ' </font><font color="#007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$system</font><font color="#007700">-&gt;</font><font color="#0000BB">getProperty</font><font color="#007700">(</font><font color="#DD0000">'os.version'</font><font color="#007700">) . </font><font color="#DD0000">' on ' </font><font color="#007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$system</font><font color="#007700">-&gt;</font><font color="#0000BB">getProperty</font><font color="#007700">(</font><font color="#DD0000">'os.arch'</font><font color="#007700">) . </font><font color="#DD0000">' &lt;br /&gt;'</font><font color="#007700">;<br /><br /></font><font color="#FF8000">// java.util.Date example<br /></font><font color="#0000BB">$formatter </font><font color="#007700">= new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.text.SimpleDateFormat'</font><font color="#007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz"</font><font color="#007700">);<br /><br />echo </font><font color="#0000BB">$formatter</font><font color="#007700">-&gt;</font><font color="#0000BB">format</font><font color="#007700">(new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.util.Date'</font><font color="#007700">));<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN99575"
></A
><P
><B
>Exemplo 2. Exemplo de AWT</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">// This example is only intended to be run as a CGI.<br /><br /></font><font color="#0000BB">$frame&nbsp;&nbsp;</font><font color="#007700">= new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.awt.Frame'</font><font color="#007700">, </font><font color="#DD0000">'PHP'</font><font color="#007700">);<br /></font><font color="#0000BB">$button </font><font color="#007700">= new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.awt.Button'</font><font color="#007700">, </font><font color="#DD0000">'Hello Java World!'</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$frame</font><font color="#007700">-&gt;</font><font color="#0000BB">add</font><font color="#007700">(</font><font color="#DD0000">'North'</font><font color="#007700">, </font><font color="#0000BB">$button</font><font color="#007700">);<br /></font><font color="#0000BB">$frame</font><font color="#007700">-&gt;</font><font color="#0000BB">validate</font><font color="#007700">();<br /></font><font color="#0000BB">$frame</font><font color="#007700">-&gt;</font><font color="#0000BB">pack</font><font color="#007700">();<br /></font><font color="#0000BB">$frame</font><font color="#007700">-&gt;</font><font color="#0000BB">visible </font><font color="#007700">= </font><font color="#0000BB">True</font><font color="#007700">;<br /><br /></font><font color="#0000BB">$thread </font><font color="#007700">= new </font><font color="#0000BB">Java</font><font color="#007700">(</font><font color="#DD0000">'java.lang.Thread'</font><font color="#007700">);<br /></font><font color="#0000BB">$thread</font><font color="#007700">-&gt;</font><font color="#0000BB">sleep</font><font color="#007700">(</font><font color="#0000BB">10000</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$frame</font><font color="#007700">-&gt;</font><font color="#0000BB">dispose</font><font color="#007700">();<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>

     Notes:

     <P
></P
><UL
><LI
><P
>&#13;        <TT
CLASS="literal"
>new Java()</TT
> criará uma instância de uma classe se
        um construtor apropriado estiver disponível. Se nenhum parâmetros for passado e
        o construtor padrão for utilizável já que prove acesso à classes como
        <TT
CLASS="literal"
>java.lang.System</TT
> que expõe a maior parte de suas
        funcionalidades através de métodos estáticos.
       </P
></LI
><LI
><P
>&#13;        Acessar um membro de uma instância primeiro procurará por uma propriedade bean,
        depois por campos públicos. Em outras palavras, <TT
CLASS="literal"
>print $date.time</TT
>
        elel primeiro tentará trabalhar com <TT
CLASS="literal"
>$date.getTime()</TT
>,
        depois com <TT
CLASS="literal"
>$date.time</TT
>.
       </P
></LI
><LI
><P
>&#13;        Tanto membros estáticos como de instância podem ser acessados em um objeto com
        a mesma sintaxe. Além disso, se o objeto java é do tipo
        <TT
CLASS="literal"
>java.lang.Class</TT
>, membros estáticos da classe
        (campos e métodos) podem ser acessados.
       </P
></LI
><LI
><P
>&#13;        Exceções disparadas resultam em avisos do PHP e em resultados <TT
CLASS="constant"
><B
>NULL</B
></TT
>. Os
        avisos podem ser eliminados prefixando uma chamada de método com um
        sinal "@". As seguintes APIs podem ser usadas para obter e reniciar
        o último erro:
        <P
></P
><UL
><LI
><P
><A
HREF="function.java-last-exception-get.html"
><B
CLASS="function"
>java_last_exception_get()</B
></A
></P
></LI
><LI
><P
><A
HREF="function.java-last-exception-clear.html"
><B
CLASS="function"
>java_last_exception_clear()</B
></A
></P
></LI
></UL
>
       </P
></LI
><LI
><P
>&#13;        Resolução de sobrecarga em geral é um problema complicado dada às
        diferenças nos tipos entre as duas linguagens. A extensão Java
        aplica uma métrica simples, mas relativamente eficaz, para
        determinar qual sobrecarga é a melhor.
       </P
><P
>&#13;        Além disso, nomes de métodos no PHP não são sensíveis ao caso, potencialmente
        aumentando o número de sobrecargas a serem escolhidas.
       </P
><P
>&#13;        Uma vez que um método é escolhido, os parâmetros são alterados se necessário,
        possivelmente com perda de dados (exemplo: números de ponto flutuante de
        precisão dupla serão convertidos para booleano).
        
       </P
></LI
><LI
><P
>&#13;        Na tradição do PHP, arrays e hashtables podem ser usados de
        forma alternada. Perceba que hashtables no PHP só podem ser indexadas
        por inteiros e strings; e que arrays de tipos primitivos em Java
        não podem ser esparsos. Também note que essas estruturas são
        passadas por valor, então pode ter custo em termos de memória e tempo.
       </P
></LI
></UL
>
    </P
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="java.servlet"
>Java Servlet SAPI</A
></H1
><P
>&#13;     O Java Servlet SAPI é montado em um mecanismo definido pela extensão Java
     que permite que o processador do PHP seja executado como uma servlet.
     A vantagem principal disso da perspectiva do PHP é que os servidores web
     que suportam servlet tipicamente tomam mais cuidado com criação e reuso de
     JVMs. Instruções de configuração para o módulo SAPI do Servlet podem ser
     encontrados em <TT
CLASS="filename"
>php4/sapi/README</TT
>.

     Avisos:

     <P
></P
><UL
><LI
><P
>&#13;        Embora esse código seja intencionado para ser capaz de rodar em qualquer engine
        de servlet, ele só foi testado até hoje no Apache's Jakarta/tomcat. Relatos
        de bugs, estórias de sucesso e/ou patches necessárias para que esse código
        funcione em qualquer outro engine seriam apreciados.
       </P
></LI
><LI
><P
>&#13;        PHP tem o hábito de mudar o diretório de trabalho. sapi/servlet irá,
        eventualmente, mudá-lo ao anterior, mas enquanto o PHP estiver executando
        o engine do servlet ele pode não ser capaz de carregar classes do CLASSPATH
        especifidao usando caminhos relativos, ou achar o diretório de trabalho
        usado para administração e tarefas de compilação de JSPs.
       </P
></LI
></UL
>
    </P
></DIV
></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Índice</B
></DT
><DT
><A
HREF="function.java-last-exception-clear.html"
>java_last_exception_clear</A
>&nbsp;--&nbsp;Limpa a última exceção Java</DT
><DT
><A
HREF="function.java-last-exception-get.html"
>java_last_exception_get</A
>&nbsp;--&nbsp;Pega a última exceção Java</DT
></DL
></DIV
></DIV
></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="function.ircg-whois.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="function.java-last-exception-clear.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>ircg_whois</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="funcref.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>java_last_exception_clear</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>