<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'about.prototypes.php',
    1 => 'Comment lire la d&eacute;finition d\'une fonction (prototype)',
    2 => 'Comment lire la d&eacute;finition d\'une fonction (prototype)',
  ),
  'up' => 
  array (
    0 => 'about.php',
    1 => '&Agrave; propos du manuel',
  ),
  'prev' => 
  array (
    0 => 'about.notes.php',
    1 => '&Agrave; propos des notes utilisateurs',
  ),
  'next' => 
  array (
    0 => 'about.phpversions.php',
    1 => 'Versions de PHP document&eacute;es dans ce manuel',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Comment lire la définition d&#039;une fonction (prototype)</h2>
  <p class="para">
   Chaque fonction dans le manuel est documentée pour permettre une
   compréhension rapide. Savoir décoder le texte rend l&#039;apprentissage plus
   facile. Plutôt que de dépendre d&#039;exemples prêts à copier/coller, il est
   plus utile de savoir lire la définition d&#039;une fonction (prototype).
   Voici comment :
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <strong>
    Pré-requis : Connaissances de base des
    <a href="language.types.php" class="link">types</a>.
   </strong><br />
   <p class="para">
    Bien que PHP soit un langage sans typage fort, une connaissance
    de base des <a href="language.types.php" class="link">types</a> est essentielle,
    car ils ont quand même des sens importants.
   </p>
  </p></blockquote>
  <p class="para">
   Les définitions de fonctions indiquent quel type de données est
   <a href="functions.returning-values.php" class="link">retourné</a>. Examinons
   la fonction <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span> comme exemple :
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Retourne la taille de la chaîne

Description
strlen ( string $string ) : int

Retourne la taille de la chaîne $string.
</pre></div>
   </div>
  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Explications de la définition de la fonction</strong></caption>
    
     <thead>
      <tr>
       <th>Partie</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>
        strlen
       </td>
       <td>
        Le nom de la fonction.
       </td>
      </tr>

      <tr>
       <td>
        (PHP 4, PHP 5, PHP 7)
       </td>
       <td>
        strlen() est présente dans toutes les versions de PHP 4, 5 et 7.
       </td>
      </tr>

      <tr>
       <td>
        ( string $string )
       </td>
       <td>
        Le premier (et ici le seul) paramètre à fournir à cette fonction est
        le paramètre <code class="parameter">string</code>, qui doit être du type
        <a href="language.types.string.php" class="link">chaîne de caractères</a>.
       </td>
      </tr>

      <tr>
       <td>
        int
       </td>
       <td>
        Type de valeur retournée par cette fonction, qui est, en l&#039;occurrence,
        un <a href="language.types.integer.php" class="link">entier</a> (c.-à-d. la taille d&#039;une chaîne est mesurée par
        un nombre).
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Nous pourrions réécrire ce prototype avec une version plus générique :
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
      nom de la fonction    ( type du paramètre   nom du paramètre ) : type de retour
</pre></div>
   </div>
  </p>
  <p class="para">
   Plusieurs fonctions ont besoin de plusieurs paramètres,
   comme <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span>.
   Son prototype est le suivant :
  </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">
   Qu&#039;est-ce que cela signifie ? <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span> retourne
   un <a href="language.types.boolean.php" class="link">booléen</a> <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en
   cas de réussite (le paramètre
   <code class="parameter">needle</code> a été trouvé dans le tableau
   <code class="parameter">haystack</code>) ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si une erreur survient
   (le paramètre <code class="parameter">needle</code> n&#039;a pas été trouvé
   dans le tableau <code class="parameter">haystack</code>). Le premier
   paramètre s&#039;appelle <code class="parameter">needle</code> et il peut être
   de différents <a href="language.types.php" class="link">types</a> : il porte
   donc la mention <em>mixed</em>.
   Le paramètre <code class="parameter">needle</code> (ce que nous recherchons)
   peut être une valeur scalaire ( <a href="language.types.string.php" class="link">chaîne de caractères</a>, <a href="language.types.integer.php" class="link">entier</a>,
   ou <a href="language.types.float.php" class="link">float</a>), ou encore un <a href="language.types.array.php" class="link">array</a>.
   <code class="parameter">haystack</code> (le <a href="language.types.array.php" class="link">array</a>,
   dans lequel nous recherchons) est
   le second paramètre. Le troisième paramètre, <em>optionnel</em>,
   <code class="parameter">strict</code>,
   est optionnel. Tous les paramètres optionnels ont une valeur par défaut ;
   si la valeur par défaut est inconnue, elle est affichée en tant que <code class="literal">?</code>.
   Le manuel indique que le paramètre <code class="parameter">strict</code> vaut par
   défaut <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Se reporter au manuel de chaque fonction pour savoir
   comment elle fonctionne.
  </p>
  <p class="para"> 
   De plus, le signe &amp; (é commercial) ajouté au début du paramètre d&#039;une
   fonction permet de passer ce paramètre par
   <a href="language.references.pass.php" class="link">référence</a>, comme ceci : 
  </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">
   Dans cet exemple, nous pouvons voir que le troisième paramètre optionnel
   <code class="parameter">&amp;$matches</code> va être passé par référence.
  </p>
  <p class="para">
   Il y a aussi des fonctions avec des informations plus complexes
   concernant les versions de PHP. Prenons
   <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span> comme exemple :
  </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">
   Cela signifie que cette fonction n&#039;est disponible
   qu&#039;à partir de PHP 4.3.0.
  </p>
 </div><?php manual_footer($setup); ?>