<?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 => 'it',
  ),
  'this' => 
  array (
    0 => 'about.prototypes.php',
    1 => 'Come leggere la definizione di una funzione (prototipo)',
    2 => 'Come leggere la definizione di una funzione (prototipo)',
  ),
  'up' => 
  array (
    0 => 'about.php',
    1 => 'Informazioni sul manuale',
  ),
  'prev' => 
  array (
    0 => 'about.notes.php',
    1 => 'Contributi degli utenti',
  ),
  'next' => 
  array (
    0 => 'about.phpversions.php',
    1 => 'Le versioni di PHP documentate in questo manuale',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    '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">Come leggere la definizione di una funzione (prototipo)</h2>
   <p class="para">
    Nel manuale ciascuna funzione è documentata per un rapido riferimento. Conoscendo
    come leggere e capendo il testo si è in grado di apprendere
    PHP molto più facilmente. Piuttosto che appoggiarsi sugli esempi o sul copia e incolla,
    preferirai sicuramente sapere come leggere la definizione di una funzione. Cominciamo:
   </p>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <strong>
     Pre-requisito: comprensione di base dei <a href="language.types.php" class="link">tipi di variabili</a>
    </strong><br />
    <p class="para">
     Sebbene PHP sia un linguaggio poco tipizzato (loosely typed), è importante avere
     una conoscenza di base delle <a href="language.types.php" class="link">tipologie</a> di variabili
     per il loro importante significato.
    </p>
   </p></blockquote>
   <p class="para">
    La definizione della funzione ci dice quale tipo
    di valore viene <a href="functions.returning-values.php" class="link">restituito</a>.
    Utilizziamo la definizione di <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span> come nostro primo esempio:
   </p>
   <p class="para">
    <div class="example-contents screen">
<div class="cdata"><pre>
strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Restituisce la lunghezza di una stringa

Descrizione
strlen ( string $string ) : int

Restituisce la lunghezza della stringa data.
</pre></div>
    </div>
   </p>
   <p class="para">
    <table class="doctable table">
     <caption><strong>Spiegazione della definizione di una funzione</strong></caption>
      
       <thead>
        <tr>
         <th>Parte</th>
         <th>Descrizione</th>
        </tr>

       </thead>

       <tbody class="tbody">
        <tr>
         <td>
          strlen
         </td>
         <td>
          Nome della funzione.
         </td>
        </tr>

        <tr>
         <td>
          (PHP 4, PHP 5, PHP 7)
         </td>
         <td>
          strlen() è disponibile in tutte le versioni di PHP 4, 5 e 7
         </td>
        </tr>

        <tr>
         <td>
          ( string $string )
         </td>
         <td>
          Il primo (ed in questo caso unico) parametro/argomento per questa
          funzione si chiama <code class="parameter">string</code>, ed è una
          <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
         </td>
        </tr>

        <tr>
         <td>
          int
         </td>
         <td>
          Tipo di valore restituito dalla funzione, il quale è un
          <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> (ovvero la lunghezza di una stringa si misura in
          numeri).
         </td>
        </tr>

       </tbody>
      
     </table>

    </p>
    <p class="para">
     Si potrebbe riscrivere la funzione precedente in modo generico:
    </p>
    <p class="para">
     <div class="example-contents screen">
<div class="cdata"><pre>
      function name    ( parameter type   parameter name ) : returned type
</pre></div>
     </div>
    </p>
    <p class="para">
     Diverse funzioni hanno diversi parametri, tipo <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span>.
     Il loro prototipo è:
    </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">
     Cosa significa? in_array() restituisce un valore
     <a href="language.types.boolean.php" class="link">boolean</a> value, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> se riesce
     (se il parametro <code class="parameter">needle</code> viene trovato in
     <code class="parameter">haystack</code>) oppure <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> se fallisce (se il parametro
     <code class="parameter">needle</code> non viene trovato in
     <code class="parameter">haystack</code>).  Il primo parametro si chiama
     <code class="parameter">needle</code> e può essere di diversi
     <a href="language.types.php" class="link">tipi</a>, pertanto lo chiameremo
     &quot;<em>mixed</em>&quot;.  Questo parametro <code class="parameter">needle</code> di tipo mixed
     (che indica che il valore che stiamo cercando) può essere sia un valore scalare (stringa, intero,
     oppure <a href="language.types.float.php" class="link">float</a>), sia una
     <a href="language.types.array.php" class="link">matrice o array</a>.
     <code class="parameter">haystack</code> (che indica la variabile in cui cercare) è il
     secondo parametro. Il terzo parametro <em>opzionale</em> è
     chiamato <code class="parameter">strict</code>.  Tutti i parametri opzionali hanno valori
     di default; se il valore di default è sconosciuto, viene mostrato come <code class="literal">?</code>.  Il manuale
     indica che il valore di default per <code class="parameter">strict</code> è il
     boolean <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.  Vedere le pagine del manuale di ciascuna funzione per i dettagli
     di come funziona.
    </p>
    <p class="para"> 
     In aggiunta il simbolo &amp; (ampersand) anteposto ad un parametro di una funzione
     permette al parametro di essere passato per <a href="language.references.pass.php" class="link">referenza</a>, come mostrato sotto: 
    </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">
     In questo esempio, si può vedere il terzo parametro opzionale <code class="parameter">&amp;$matches</code> che verrà
     passato per referenza. 
    </p>
    <p class="para">
     Esistono anche funzioni con complesse informazioni sulla versione PHP. Ad esempio
     la funzione <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">
     Questo significa che questa funzione è
     disponibile solo a partire dalla release PHP 4.3.0.
    </p>
 </div><?php manual_footer($setup); ?>