Sophie

Sophie

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

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
>Argumentos de funçõ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="Funções"
HREF="language.functions.html"><LINK
REL="PREVIOUS"
TITLE="Funções"
HREF="language.functions.html"><LINK
REL="NEXT"
TITLE="Retornando valores"
HREF="functions.returning-values.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="language.functions.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 17. Funções</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="functions.returning-values.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="functions.arguments"
>Argumentos de funções</A
></H1
><P
>&#13;    Informações podem ser passadas para funções através da lista de argumentos, que é uma
    lista de expressões delimitados por vírgulas.
   </P
><P
>&#13;    O PHP suporta a passagem de argumentos por valor (o padrão), <A
HREF="functions.arguments.html#functions.arguments.by-reference"
>passagem por
    referência</A
> e <A
HREF="functions.arguments.html#functions.arguments.default"
>valores padrão de
    argumento</A
>. Listas de argumentos de comprimento variável são suportadas apenas
    no PHP4 e posterior; veja <A
HREF="functions.arguments.html#functions.variable-arg-list"
>Número de argumentos
    variável</A
> e as referências das funções
    <A
HREF="function.func-num-args.html"
><B
CLASS="function"
>func_num_args()</B
></A
>,
    <A
HREF="function.func-get-arg.html"
><B
CLASS="function"
>func_get_arg()</B
></A
> e
    <A
HREF="function.func-get-args.html"
><B
CLASS="function"
>func_get_args()</B
></A
> para mais informações. Um
    efeito similar pode ser atingido no PHP 3 pela passagem de um array de
    argumentos para uma função:
   </P
><P
>&#13;    <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5209"
></A
><P
><B
>Exemplo 17-5. Passando arrays para funções</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">takes_array</font><font color="#007700">(</font><font color="#0000BB">$input</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">"$input</font><font color="#007700">[</font><font color="#DD0000">0</font><font color="#007700">]</font><font color="#DD0000"> + $input</font><font color="#007700">[</font><font color="#DD0000">1</font><font color="#007700">]</font><font color="#DD0000"> = "</font><font color="#007700">, </font><font color="#0000BB">$input</font><font color="#007700">[</font><font color="#0000BB">0</font><font color="#007700">]+</font><font color="#0000BB">$input</font><font color="#007700">[</font><font color="#0000BB">1</font><font color="#007700">];<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
   </P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="functions.arguments.by-reference"
>Fazendo argumentos serem passados por referência</A
></H2
><P
>&#13;     Por padrão, argumentos de função são passados por valor (de forma que se
     você mudar o valor do parâmetro dentro da função, ele não é alterado fora
     da função). Se você deseja permitir que uma função modifique seus argumentos,
     você precisa passá-los por
     referência.
    </P
><P
>&#13;     Se você quer que um argumento para uma função sempre seja passado por
     referência, você pode preceder o nome do argumento com um "e comercial" (&#38;)
     na definição da função:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5217"
></A
><P
><B
>Exemplo 17-6. Passando parâmetros de função por referência</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">add_some_extra</font><font color="#007700">(&amp;</font><font color="#0000BB">$string</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$string </font><font color="#007700">.= </font><font color="#DD0000">' e alguma coisa mais.'</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">$str </font><font color="#007700">= </font><font color="#DD0000">'Isto é uma string,'</font><font color="#007700">;<br /></font><font color="#0000BB">add_some_extra</font><font color="#007700">(</font><font color="#0000BB">$str</font><font color="#007700">);<br />echo </font><font color="#0000BB">$str</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// imprime 'Isto é uma string, e alguma coisa mais.'<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="functions.arguments.default"
>Valores padrão de argumentos</A
></H2
><P
>&#13;     Uma função pode definir valores padrão no estilo C++ para argumentos escalares, como
     a seguir:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5224"
></A
><P
><B
>Exemplo 17-7. Utilizando parâmtros default em funções</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">cafeteira </font><font color="#007700">(</font><font color="#0000BB">$tipo </font><font color="#007700">= </font><font color="#DD0000">"cappuccino"</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"Fazendo uma xícara de café $tipo.</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br />}<br />echo </font><font color="#0000BB">cafeteira </font><font color="#007700">();<br />echo </font><font color="#0000BB">makecoffee</font><font color="#007700">(</font><font color="#0000BB">null</font><font color="#007700">);<br />echo </font><font color="#0000BB">cafeteira </font><font color="#007700">(</font><font color="#DD0000">"expresso"</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     A saída do código acima será:
    </P
><P
>&#13;     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="screen"
>Fazendo uma xícara de café cappucino.
Fazendo uma xícara de .
Fazendo uma xícara de café expresso.</PRE
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     O PHP também permite que você use matrizes e o tipo especial NULL como
     valor padrão, por exemplo:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5232"
></A
><P
><B
>Exemplo 17-8. Usando tipos não escalares como valores padrões</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">makecoffee</font><font color="#007700">(</font><font color="#0000BB">$types </font><font color="#007700">= array(</font><font color="#DD0000">"cappuccino"</font><font color="#007700">), </font><font color="#0000BB">$coffeeMaker </font><font color="#007700">= </font><font color="#0000BB">NULL</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$device </font><font color="#007700">= </font><font color="#0000BB">is_null</font><font color="#007700">(</font><font color="#0000BB">$coffeeMaker</font><font color="#007700">) ? </font><font color="#DD0000">"hands" </font><font color="#007700">: </font><font color="#0000BB">$coffeeMaker</font><font color="#007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"Making a cup of "</font><font color="#007700">.</font><font color="#0000BB">join</font><font color="#007700">(</font><font color="#DD0000">", "</font><font color="#007700">, </font><font color="#0000BB">$types</font><font color="#007700">).</font><font color="#DD0000">" with $device.</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br />}<br />echo </font><font color="#0000BB">makecoffee</font><font color="#007700">();<br />echo </font><font color="#0000BB">makecoffee</font><font color="#007700">(array(</font><font color="#DD0000">"cappuccino"</font><font color="#007700">, </font><font color="#DD0000">"lavazza"</font><font color="#007700">), </font><font color="#DD0000">"teapot"</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>

     </P
><P
>&#13;     O valor padrão precisa ser uma expressão constante, não (por
     exemplo) uma variável, um membro de classe ou uma chamada de função.
    </P
><P
>&#13;     Note que usando argumentos padrão, qualquer padrão deve vir após
     os argumentos sem padrão: caso contrário, as coisas não funcionarão
     como esperado. Considere o seguinte trecho de código:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5238"
></A
><P
><B
>Exemplo 17-9. Uso incorreto de parâmetros de função default</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">iogurtera </font><font color="#007700">(</font><font color="#0000BB">$tipo </font><font color="#007700">= </font><font color="#DD0000">"azeda"</font><font color="#007700">, </font><font color="#0000BB">$sabor</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"Fazendo uma taça de $sabor $tipo.</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br />}<br /><br />echo </font><font color="#0000BB">iogurtera </font><font color="#007700">(</font><font color="#DD0000">"framboesa"</font><font color="#007700">);&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// não funciona como esperado<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     A saída do exemplo acima é:
    </P
><P
>&#13;     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="screen"
>Warning: Missing argument 2 in call to iogurtera() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Fazendo uma taça de framboesa.</PRE
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     Agora, compare o que está acima com este:
    </P
><P
>&#13;     <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN5246"
></A
><P
><B
>Exemplo 17-10. Uso correto de parâmetros de função default</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">iogurtera </font><font color="#007700">(</font><font color="#0000BB">$sabor</font><font color="#007700">, </font><font color="#0000BB">$tipo </font><font color="#007700">= </font><font color="#DD0000">"azeda"</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#DD0000">"Fazendo uma taça de $sabor $tipo.</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br />}<br /><br />echo </font><font color="#0000BB">iogurtera </font><font color="#007700">(</font><font color="#DD0000">"framboesa"</font><font color="#007700">);&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// funciona<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
    </P
><P
>&#13;     A saída deste exemplo é:
    </P
><P
>&#13;     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="screen"
>Fazendo uma taça de framboesa azeda.</PRE
></TD
></TR
></TABLE
>
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
       A partir do PHP 5, os valores padrões são passados por referência.
      </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="functions.variable-arg-list"
>Número variável de argumentos</A
></H2
><P
>&#13;     O PHP4 e posteriores tem suporte para um número variável de argumentos
     nas funções definidas pelo usuário. Isto é realmente bem fácil, usando
     as funções <A
HREF="function.func-num-args.html"
><B
CLASS="function"
>func_num_args()</B
></A
>,
     <A
HREF="function.func-get-arg.html"
><B
CLASS="function"
>func_get_arg()</B
></A
> e
     <A
HREF="function.func-get-args.html"
><B
CLASS="function"
>func_get_args()</B
></A
>.
    </P
><P
>&#13;     Nenhuma sintaxe especial é requerida, e a lista de argumentos ainda
     pode ser fornecida explicitamente com as definições de funções e se
     comportarão normalmente.
    </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="language.functions.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="functions.returning-values.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Funções</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.functions.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Retornando valores</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>