<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration81.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'migration81.incompatible.php',
    1 => 'Les changements de r&eacute;trocompatibilit&eacute;s',
    2 => 'Les changements de r&eacute;trocompatibilit&eacute;s',
  ),
  'up' => 
  array (
    0 => 'migration81.php',
    1 => 'Migration de PHP 8.0.x vers PHP 8.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration81.constants.php',
    1 => 'Nouvelles Constantes globales',
  ),
  'next' => 
  array (
    0 => 'migration81.deprecated.php',
    1 => 'Fonctionnalit&eacute;s d&eacute;pr&eacute;ci&eacute;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'appendices/migration81/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration81.incompatible" class="sect1">
 <h2 class="title">Les changements de rétrocompatibilités</h2>

 <div class="sect2" id="migration81.incompatible.core">
  <h3 class="title">PHP Core</h3>

  <div class="sect3" id="migration81.incompatible.core.globals-access">
   <h4 class="title">Restrictions d&#039;accès $GLOBALS</h4>

   <p class="para">
    L&#039;accès au tableau <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> est maintenant soumis à
    un certain nombre de restrictions.
    L&#039;accès en lecture et en écriture aux éléments individuels du tableau tel que
    <code class="code">$GLOBALS[&#039;var&#039;]</code> continue de fonctionner tel quel.
    L&#039;accès en lecture seule à l&#039;ensemble du tableau <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> continue
    également d&#039;être supporté.
    Cependant, l&#039;accès en écriture à l&#039;ensemble du tableau <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var>
    n&#039;est plus supporté. Par exemple, <code class="code">array_pop($GLOBALS)</code>
    générera une erreur.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.static-variable-inheritance">
   <h4 class="title">
    L&#039;utilisation de variables <span class="modifier">static</span> dans les méthodes héritées.
   </h4>

   <p class="para">
    Lorsqu&#039;une méthode utilisant des variables static est héritée
    (mais non surchargée), la méthode héritée partagera désormais les variables.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    public static function </span><span style="color: #0000BB">counter</span><span style="color: #007700">() {<br />        static </span><span style="color: #0000BB">$counter </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$counter</span><span style="color: #007700">++;<br />        return </span><span style="color: #0000BB">$counter</span><span style="color: #007700">;<br />    }<br />}<br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(1)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(2)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(3), précédemment int(1)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(4), précédemment int(2)<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Cela signifie que les variables statiques dans les méthodes se comportent désormais
    de la même manière que les propriétés statiques.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.optional-before-required">
   <h4 class="title">Les paramètres optionnels spécifiés avant les paramètres requis</h4>

   <p class="para">
    Un <a href="functions.arguments.php#functions.arguments.default" class="link">paramètre optionnel</a>
    spécifié avant les paramètres requis est maintenant toujours traité comme requis,
    même lorsqu&#039;il est appelé en utilisant
    <a href="functions.arguments.php#functions.named-arguments" class="link">les arguments nommés</a>.
    À partir de PHP 8.0.0, mais avant PHP 8.1.0, le code ci-dessous émet une note de dépréciation
    sur la définition, mais s&#039;exécute avec succès lorsqu&#039;il est appelé. À partir de PHP 8.1.0, une erreur
    de la classe <span class="classname"><a href="class.argumentcounterror.php" class="classname">ArgumentCountError</a></span> est lancée, comme ce serait le cas lorsqu&#039;il
    est appelé avec des arguments positionnels.

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">makeyogurt</span><span style="color: #007700">(</span><span style="color: #0000BB">$container </span><span style="color: #007700">= </span><span style="color: #DD0000">"bowl"</span><span style="color: #007700">, </span><span style="color: #0000BB">$flavour</span><span style="color: #007700">)<br />{<br />    return </span><span style="color: #DD0000">"Making a </span><span style="color: #0000BB">$container</span><span style="color: #DD0000"> of </span><span style="color: #0000BB">$flavour</span><span style="color: #DD0000"> yogurt.\n"</span><span style="color: #007700">;<br />}<br />try<br />{<br />    echo </span><span style="color: #0000BB">makeyogurt</span><span style="color: #007700">(</span><span style="color: #0000BB">flavour</span><span style="color: #007700">: </span><span style="color: #DD0000">"raspberry"</span><span style="color: #007700">);<br />}<br />catch (</span><span style="color: #0000BB">Error $e</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$e</span><span style="color: #007700">), </span><span style="color: #DD0000">' - '</span><span style="color: #007700">, </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMessage</span><span style="color: #007700">(), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <p class="para">Résultat de l&#039;exemple ci-dessus en PHP 8.0 :</p>
     <div class="example-contents screen">
<div class="cdata"><pre>
Deprecated: Required parameter $flavour follows optional parameter $container
 in example.php on line 3
Making a bowl of raspberry yogurt.
</pre></div>
     </div>
     <p class="para">Résultat de l&#039;exemple ci-dessus en PHP 8.1 :</p>
     <div class="example-contents screen">
<div class="cdata"><pre>
Deprecated: Optional parameter $container declared before required parameter
 $flavour is implicitly treated as a required parameter in example.php on line 3
ArgumentCountError - makeyogurt(): Argument #1 ($container) not passed
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Il est à noter qu&#039;une valeur par défaut de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> peut être utilisée avant les paramètres requis pour
    spécifier un <a href="language.types.declarations.php#language.types.declarations.nullable" class="link">type nullable</a>,
    mais le paramètre sera toujours requis.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.type-compatibility-internal">
   <h4 class="title">La compatibilité des types de retour avec les classes internes</h4>

   <p class="para">
    La plupart des méthodes internes non finales nécessitent désormais que les méthodes de surcharge déclarent
    un type de retour compatible, sinon une note de dépréciation est émise lors de la validation de l&#039;héritage.
    Dans le cas où le type de retour ne peut pas être déclaré pour une méthode de surcharge en raison de
    préoccupations de compatibilité inter-version de PHP,
    un attribut <span class="classname"><a href="class.returntypewillchange.php" class="classname">ReturnTypeWillChange</a></span> peut être ajouté pour supprimer la note de dépréciation.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.new-keywords">
   <h4 class="title">Nouveaux mots-clés</h4>
   <p class="para">
    <code class="literal">readonly</code> est désormais un mot-clé. Cependant, il peut toujours être utilisé
    comme nom de fonction.
   </p>
   <p class="para">
    <code class="literal">never</code> est désormais un mot réservé, donc il ne peut pas être utilisé pour nommer une classe,
    une interface ou un trait, et est également interdit d&#039;être utilisé dans les namespaces.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.incompatible.resource2object">
  <h3 class="title">Migration de ressource vers objet</h3>

  <p class="para">
   Plusieurs <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s ont été migrées vers des <a href="language.types.object.php" class="link">objet</a>s.
   Les vérifications de valeur de retour utilisant <span class="function"><a href="function.is-resource.php" class="function">is_resource()</a></span> doivent être remplacées par des vérifications de <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.fileinfo.php" class="link">FileInfo</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.finfo.php" class="classname">finfo</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">fileinfo</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.ftp.php" class="link">FTP</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.ftp-connection.php" class="classname">FTP\Connection</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">ftp</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.imap.php" class="link">IMAP</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.imap-connection.php" class="classname">IMAP\Connection</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">imap</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.ldap.php" class="link">LDAP</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">ldap link</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.ldap.php" class="link">LDAP</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">ldap result</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.ldap.php" class="link">LDAP</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.ldap-result-entry.php" class="classname">LDAP\ResultEntry</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">ldap result entry</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.pgsql.php" class="link">PgSQL</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.pgsql-connection.php" class="classname">PgSql\Connection</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">pgsql link</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.pgsql.php" class="link">PgSQL</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.pgsql-result.php" class="classname">PgSql\Result</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">pgsql result</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.pgsql.php" class="link">PgSQL</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.pgsql-lob.php" class="classname">PgSql\Lob</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">pgsql large object</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.pspell.php" class="link">PSpell</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.pspell-dictionary.php" class="classname">PSpell\Dictionary</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">pspell</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Les fonctions <a href="book.pspell.php" class="link">PSpell</a> acceptent et retournent désormais
     des objets <span class="classname"><a href="class.pspell-config.php" class="classname">PSpell\Config</a></span> au lieu
     de <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>s <code class="literal">pspell config</code>.
    </p>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration81.incompatible.mysqli">
  <h3 class="title">MySQLi</h3>

  <p class="para">
   <span class="function"><a href="mysqli-result.fetch-fields.php" class="function">mysqli_fetch_fields()</a></span>, et
   <span class="function"><a href="mysqli-result.fetch-field-direct.php" class="function">mysqli_fetch_field_direct()</a></span> retourneront désormais
   <code class="literal">0</code> pour la <span class="property">max_length</span>.
   Cette information peut être calculée en itérant sur le jeu de résultats,
    et en prenant la longueur maximale. C&#039;est ce que PHP faisait
    précédemment en interne.
  </p>

  <p class="para">
   L&#039;option <strong><code><a href="mysqli.constants.php#constant.mysqli-stmt-attr-update-max-length">MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH</a></code></strong>
   n&#039;a plus aucun effet.   
  </p>

  <p class="para">
   L&#039;option <strong><code><a href="mysqli.constants.php#constant.mysqli-store-result-copy-data">MYSQLI_STORE_RESULT_COPY_DATA</a></code></strong>
   n&#039;a plus aucun effet. Passer une valeur au 
   paramètre <code class="parameter">mode</code> de
   <span class="methodname"><a href="mysqli.store-result.php" class="methodname">mysqli::store_result()</a></span> n&#039;a plus aucun effet.
  </p>

  <p class="para">
   <span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::connect()</a></span> retourne maintenant <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> au lieu de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> en cas de succès.
  </p>

  <p class="para">
   Le mode de gestion des erreurs par défaut a été changé de &quot;silencieux&quot; à &quot;exceptions&quot;.
   Voir la page <a href="mysqli-driver.report-mode.php" class="link">Mode de rapport MySQLi</a>
   pour plus de détails sur ce que cela implique,
   et comment définir explicitement cet attribut.
   Pour restaurer le comportement précédent, utiliser :
   <code class="code">mysqli_report(MYSQLI_REPORT_OFF);</code>
  </p>

  <p class="para">
   Les classes étendant <span class="methodname"><a href="mysqli-stmt.execute.php" class="methodname">mysqli_stmt::execute()</a></span>
   doivent désormais spécifier le paramètre optionnel supplémentaire.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.mysqlnd">
  <h3 class="title">MySQLnd</h3>

  <p class="para">
   La directive INI <a href="mysqlnd.config.php#ini.mysqlnd.fetch_data_copy" class="link">mysqlnd.fetch_data_copy</a>
   a été enlevée.
   Cela ne devrait pas entraîner de changements de comportement visibles pour l&#039;utilisateur.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.openssl">
  <h3 class="title">OpenSSL</h3>

  <p class="para">
   Les clés privées EC seront désormais exportées au format <abbr title="Public Key Cryptography Standards">PKCS</abbr>#8 plutôt
   que le format traditionnel, tout comme toutes les autres clés.
  </p>
  <p class="para">
   <span class="function"><a href="function.openssl-pkcs7-encrypt.php" class="function">openssl_pkcs7_encrypt()</a></span> et
   <span class="function"><a href="function.openssl-cms-encrypt.php" class="function">openssl_cms_encrypt()</a></span> utiliseront désormais par défaut
   AES-128-CBC plutôt que RC2-40. Le chiffrement RC2-40 est considéré
   comme non sécurisé et n&#039;est pas activé par défaut par OpenSSL 3.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.pdo">
  <h3 class="title">Les objets de données PHP</h3>

  <p class="para">
   <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong> transforme désormais les valeurs
   de type <a href="language.types.boolean.php" class="link">booléen</a> en <code class="literal">&quot;0&quot;</code> ou
   <code class="literal">&quot;1&quot;</code>. Précédemment, les <a href="language.types.boolean.php" class="link">booléen</a> n&#039;étaient pas transformés en chaînes.
  </p>
  <p class="para">
   Appeler <span class="methodname"><a href="pdostatement.bindcolumn.php" class="methodname">PDOStatement::bindColumn()</a></span> avec
   <strong><code><a href="pdo.constants.php#pdo.constants.param-lob">PDO::PARAM_LOB</a></code></strong> liera désormais constamment un flux
   de résultat lorsqu&#039;<strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong> n&#039;est pas activé.
   Précédemment, le résultat était soit un flux, soit une chaîne en fonction du
   pilote de base de données utilisé et du moment où la liaison est effectuée.
  </p>

  <div class="sect3" id="migration81.incompatible.pdo.mysql">
   <h4 class="title">Driver MySQL</h4>

   <p class="para">
    Les entiers et les flottants dans les ensembles de résultats seront désormais retournés en utilisant
    les types natifs PHP au lieu de <a href="language.types.string.php" class="link">chaîne de caractères</a>s lors de l&#039;utilisation des déclarations préparées émulées.
    Cela correspond au comportement des déclarations préparées natives.
    Le comportement précédent peut être restauré en activant l&#039;option
    <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong>.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.pdo.sqlite">
   <h4 class="title">Driver SQLite</h4>

   <p class="para">
    Les entiers et les flottants dans les ensembles de résultats seront désormais retournés en utilisant
    les types PHP.
    Le comportement précédent peut être restauré en activant l&#039;option
    <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong>.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.incompatible.phar">
  <h3 class="title">Phar</h3>

  <p class="para">
   Pour se conformer à l&#039;interface <span class="interfacename"><a href="class.arrayaccess.php" class="interfacename">ArrayAccess</a></span>,
   <span class="methodname"><a href="phar.offsetunset.php" class="methodname">Phar::offsetUnset()</a></span> et
   <span class="methodname"><a href="phardata.offsetunset.php" class="methodname">PharData::offsetUnset()</a></span> ne retournent plus un <a href="language.types.boolean.php" class="link">booléen</a>.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.standard">
  <h3 class="title">Standard</h3>

  <p class="para">
   <span class="function"><a href="function.version-compare.php" class="function">version_compare()</a></span> n&#039;accepte plus les abréviations d&#039;opérateurs non documentées.
  </p>

  <p class="para">
   <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span>,
   <span class="function"><a href="function.htmlentities.php" class="function">htmlentities()</a></span>,
   <span class="function"><a href="function.htmlspecialchars-decode.php" class="function">htmlspecialchars_decode()</a></span>,
   <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span>,
   et <span class="function"><a href="function.get-html-translation-table.php" class="function">get_html_translation_table()</a></span>
   utilisent désormais <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE</code> plutôt que
   <strong><code><a href="string.constants.php#constant.ent-compat">ENT_COMPAT</a></code></strong> par défaut.
   Cela signifie que <code class="literal">&#039;</code> est échappé en
   <code class="literal">&amp;#039;</code> alors qu&#039;auparavant rien n&#039;était fait.
   De plus, l&#039;UTF-8 mal formé sera remplacé par un caractère de substitution Unicode,
   au lieu de résulter en une chaîne vide.
  </p>

  <p class="para">
   <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> affiche désormais le refcount des références
   avec leur refcount, au lieu de simplement préfixer
   <code class="literal">&amp;</code> à la valeur.
   Cela modélise plus précisément la représentation de référence à partir de PHP 7.0.
  </p>

  <p class="para">
   <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> affiche désormais <code class="literal">interned</code>
   au lieu d&#039;un refcount factice pour les chaînes internées et les tableaux immuables.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.spl">
  <h3 class="title">Bibliothèque Standard de PHP (Standard PHP Library ou SPL)</h3>

  <p class="para">
   <span class="classname"><a href="class.splfixedarray.php" class="classname">SplFixedArray</a></span>, sera désormais encodé en JSON comme un <a href="language.types.array.php" class="link">tableau</a>.
  </p>
 </div>

</div><?php manual_footer($setup); ?>