<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/about.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'about.prototypes.php',
    1 => 'Como ler uma defini&ccedil;&atilde;o de fun&ccedil;&atilde;o (prot&oacute;tipo)',
    2 => 'Como ler uma defini&ccedil;&atilde;o de fun&ccedil;&atilde;o (prot&oacute;tipo)',
  ),
  'up' => 
  array (
    0 => 'about.php',
    1 => 'Sobre o manual',
  ),
  'prev' => 
  array (
    0 => 'about.notes.php',
    1 => 'Sobre as notas dos usu&aacute;rios',
  ),
  'next' => 
  array (
    0 => 'about.phpversions.php',
    1 => 'Vers&otilde;es do PHP documentadas neste manual',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'appendices/about.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="about.prototypes" class="sect1">
   <h2 class="title">Como ler uma definição de função (protótipo)</h2>
   <p class="para">
    Cada função no manual é documentada para uma referência rápida. Saber como
    ler e entender o texto tornará a aprendizagem do PHP
    muito mais fácil. Mais do que simplesmente estudar exemplos ou copiar/colar, todos deveriam
    saber como ler as definições de funções (protótipos). Vamos começar:
   </p>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <strong>
     Pré-requisito: Entendimento básico de <a href="language.types.php" class="link">tipos</a>
    </strong><br />
    <p class="para">
     Mesmo o PHP sendo uma linguagem fracamente tipada, é importante ter um
     entendimento básico dos <a href="language.types.php" class="link">tipos</a> pois
     eles têm um importante significado.
    </p>
   </p></blockquote>
   <p class="para">
    Definições das funções nos dizem que
    tipo de valor é <a href="functions.returning-values.php" class="link">retornado</a>.
    Vamos usar a definição da função <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span> como nosso primeiro exemplo:
   </p>
   <p class="para">
    <div class="example-contents screen">
<div class="cdata"><pre>
strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Obtém o tamanho da string

Descrição
strlen ( string $string ) : int

Retorna o tamanho da string dada.
</pre></div>
    </div>
   </p>
   <p class="para">
    <table class="doctable table">
     <caption><strong>Explicação de uma definição de função</strong></caption>
      
       <thead>
        <tr>
         <th>Parte</th>
         <th>Descrição</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td>
          strlen
         </td>
         <td>
          Nome da função.
         </td>
        </tr>

        <tr>
         <td>
          (PHP 4, PHP 5, PHP 7)
         </td>
         <td>
          strlen() está disponível em todas as versões do PHP 4, 5 e 7
         </td>
        </tr>

        <tr>
         <td>
          ( string $string )
         </td>
         <td>
          O primeiro (e neste caso, o único) parâmetro/argumento para esta
          função é chamado <code class="parameter">string</code>, e é uma
          <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
         </td>
        </tr>

        <tr>
         <td>
          int
         </td>
         <td>
          Tipo do valor que esta função retorna, que é um
          <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> (isto é, o comprimento de uma string é
          medido em números).
         </td>
        </tr>

       </tbody>
      
     </table>

    </p>
    <p class="para">
     Poderíamos reescrever a definição da função acima de uma maneira genérica:
    </p>
    <p class="para">
     <div class="example-contents screen">
<div class="cdata"><pre>
      nome da função    ( tipo do parâmetro   nome do parâmetro ) : tipo retornado
</pre></div>
     </div>
    </p>
    <p class="para">
     Muitas funções recebem múltiplos parâmetros, tais como a função <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span>.
     Seu protótipo segue abaixo:
    </p>
    <p class="para">
     <div class="example-contents screen">
<div class="cdata"><pre>
      in_array ( mixed $needle, array $haystack , bool $strict = false ) : bool
</pre></div>
     </div>
    </p>
    <p class="para">
     O que isso significa? in_array() retorna um valor
     <a href="language.types.boolean.php" class="link">booleano</a>, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> em caso de
     sucesso (se <code class="parameter">needle</code> foi encontrado em
     <code class="parameter">haystack</code>)  ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> em caso de falha (se
     <code class="parameter">needle</code> não foi encontrado em
     <code class="parameter">haystack</code>). O primeiro parâmetro é chamado
     <code class="parameter">needle</code> e pode de ser de vários
     <a href="language.types.php" class="link">tipos</a> diferentes, por isso nós o chamamos
     &quot;<em>mixed</em>&quot; (misto). Esse <code class="parameter">needle</code> mixed
     (o que nós estamos procurando) pode ser tanto um valor escalar (string, inteiro,
     ou <a href="language.types.float.php" class="link">float</a>) ou um
     <a href="language.types.array.php" class="link">array</a>.
     <code class="parameter">haystack</code> (o array onde nós estamos procurando) é o
     segundo parâmetro. O terceiro parâmetro <em>opcional</em> é
     chamado <code class="parameter">strict</code>. Todos os parâmetros opcionais têm valores
     padrão (default). Se o valor padrão é desconhecido, então é mostrado um <code class="literal">?</code>. O exemplo
     diz que o valor padrão do parâmetro <code class="parameter">strict</code> é o
     booleano <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Veja a página do manual de cada função para detalhes de
     como elas funcionam.
    </p>
    <p class="para">
     Além do mais o símbolo &amp; (ampersand, e comercial) antes de um parâmetro de função
     permite ao parâmetro ser passado por <a href="language.references.pass.php" class="link">referência</a>, como no exemplo abaixo:
    </p>
    <p class="para">
     <div class="example-contents screen">
<div class="cdata"><pre>
       preg_match ( string $pattern , string $subject , array &amp;$matches = null,
       int $flags = 0 , int $offset = 0 ) : int|false
</pre></div>
     </div>
    </p>
    <p class="para">
     Neste exemplo podemos ver que o terceiro parâmetro opcional <code class="parameter">&amp;$matches</code> será
     passado por referência.
    </p>
    <p class="para">
     Existem também funções com informações de versões do PHP mais complexas. Tome como exemplo
     <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span>:
    </p>
    <p class="para">
     <div class="example-contents screen">
<div class="cdata"><pre>
(PHP 4 &gt;= 4.3.0, PHP 5, PHP 7)
</pre></div>
     </div>
    </p>
    <p class="para">
     Isto significa que esta função só está disponível
     a partir da versão PHP 4.3.0.
    </p>
 </div><?php manual_footer($setup); ?>