Sophie

Sophie

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

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
>declare</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="Estruturas de Controle"
HREF="language.control-structures.html"><LINK
REL="PREVIOUS"
TITLE="switch"
HREF="control-structures.switch.html"><LINK
REL="NEXT"
TITLE="return"
HREF="function.return.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="control-structures.switch.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 16. Estruturas de Controle</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="function.return.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="control-structures.declare"
><TT
CLASS="literal"
>declare</TT
></A
></H1
><P
>&#13;    O construtor <TT
CLASS="literal"
>declare</TT
> é utilizado para
    configurar diretivas de execução para blocos de código.
    A sintaxe do <TT
CLASS="literal"
>declare</TT
> é similar
    a sintaxe de outros construtores de controle.
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN4859"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>declare (diretiva)
  instrucao</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    A seção <TT
CLASS="literal"
>diretiva</TT
> permite o
    comportamento do bloco <TT
CLASS="literal"
>declare</TT
> a
    ser configurado.
    Atualmente somente uma diretiva é reconhecida: a
    diretiva <TT
CLASS="literal"
>ticks</TT
>. (veja abaixo para maiores
    informações em
    <A
HREF="control-structures.declare.html#control-structures.declare.ticks"
>diretiva
    ticks</A
>)
   </P
><P
>&#13;    A parte <TT
CLASS="literal"
>instrucao</TT
> do
    bloco <TT
CLASS="literal"
>declare</TT
> será executada. Como
    ela é executada e que efeitos colaterais que podem ocorrem durante a execução
    dependem da configuração
    <TT
CLASS="literal"
>diretiva</TT
>.
   </P
><P
>&#13;    O construtor <TT
CLASS="literal"
>declare</TT
> também pode ser utilizado no escopo
    global, afetando todo o código que se seguir.
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN4872"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">// isso eh o mesmo:<br /><br />// voce pode fazer isso:<br /></font><font color="#007700">declare(</font><font color="#0000BB">ticks</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// script inteiro aqui<br /></font><font color="#007700">}<br /><br /></font><font color="#FF8000">// ou pode fazer isto:<br /></font><font color="#007700">declare(</font><font color="#0000BB">ticks</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">);<br /></font><font color="#FF8000">// sctipt inteiro aqui<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="control-structures.declare.ticks"
>Ticks</A
></H2
><P
>Um tick é um evento que ocorre para cada
    <CODE
CLASS="varname"
>N</CODE
> níveis de instruções executados
    pelo interpretador com o bloco <TT
CLASS="literal"
>declare</TT
>.
    O valor para <CODE
CLASS="varname"
>N</CODE
> é especificado
    utilizando <TT
CLASS="literal"
>ticks=<CODE
CLASS="varname"
>N</CODE
></TT
>
    nos blocos <TT
CLASS="literal"
>declare</TT
> das
    seções <TT
CLASS="literal"
>diretiva</TT
>.
   </P
><P
>&#13;    O(s) evento(s) que ocorre(m) em cada tick são especificados utilizando
    <A
HREF="function.register-tick-function.html"
><B
CLASS="function"
>register_tick_function()</B
></A
>. Veja o exemplo
    abaixo para maiores detalhes. Note que mais de um evento pode ocorrer
    em cada tick.
   </P
><P
>&#13;    <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN4887"
></A
><P
><B
>Exemplo 16-3. Histórico de um trecho de código PHP</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">// Uma função que grava o tempo entre as chamadas<br /></font><font color="#007700">function </font><font color="#0000BB">profile </font><font color="#007700">(</font><font color="#0000BB">$dump </font><font color="#007700">= </font><font color="#0000BB">FALSE</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static </font><font color="#0000BB">$profile</font><font color="#007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// Retorna os tempos preservados no histórico, então apaga<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">if (</font><font color="#0000BB">$dump</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$temp </font><font color="#007700">= </font><font color="#0000BB">$profile</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset (</font><font color="#0000BB">$profile</font><font color="#007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#0000BB">$temp</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$profile</font><font color="#007700">[] = </font><font color="#0000BB">microtime </font><font color="#007700">();<br />}<br /><br /></font><font color="#FF8000">// Ativa o manipulador do tick<br /></font><font color="#0000BB">register_tick_function</font><font color="#007700">(</font><font color="#DD0000">"profile"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Inicializa a função antes de declarar o bloco<br /></font><font color="#0000BB">profile</font><font color="#007700">();<br /><br /></font><font color="#FF8000">// Roda um trecho de código, disparando um tick a cada duas instruções<br /></font><font color="#007700">declare(</font><font color="#0000BB">ticks</font><font color="#007700">=</font><font color="#0000BB">2</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;for (</font><font color="#0000BB">$x </font><font color="#007700">= </font><font color="#0000BB">1</font><font color="#007700">; </font><font color="#0000BB">$x </font><font color="#007700">&lt; </font><font color="#0000BB">50</font><font color="#007700">; ++</font><font color="#0000BB">$x</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#0000BB">similar_text</font><font color="#007700">(</font><font color="#0000BB">md5</font><font color="#007700">(</font><font color="#0000BB">$x</font><font color="#007700">), </font><font color="#0000BB">md5</font><font color="#007700">(</font><font color="#0000BB">$x</font><font color="#007700">*</font><font color="#0000BB">$x</font><font color="#007700">)), </font><font color="#DD0000">"&lt;br /&gt;;"</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></font><font color="#FF8000">// Mostra os dados guardados no histórico<br /></font><font color="#0000BB">print_r</font><font color="#007700">(</font><font color="#0000BB">profile </font><font color="#007700">(</font><font color="#0000BB">TRUE</font><font color="#007700">));<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    No exemplo acima, o bloco 'declare'
    grava os tempos a cada segundo nível dentro das
    instruções no bloco enquanto executam. Esta informação pode
    ser utilizada para encontrar áreas lentas em segmentos
    particulares de código. Este processo pode ser realizado de outras
    formas, mas a utilização de ticks é mais conveniente e fácil de
    implementar.
   </P
><P
>&#13;    Ticks são idealizados para debug, implementação de multitask
    simples, processos de I/O em background e afins.
   </P
><P
>&#13;    Veja também: <A
HREF="function.register-tick-function.html"
><B
CLASS="function"
>register_tick_function()</B
></A
> e
    <A
HREF="function.unregister-tick-function.html"
><B
CLASS="function"
>unregister_tick_function()</B
></A
>.
   </P
></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="control-structures.switch.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.return.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><TT
CLASS="literal"
>switch</TT
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.control-structures.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>return</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>