<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration83.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'migration83.other-changes.php',
    1 => 'Autres changements',
    2 => 'Autres changements',
  ),
  'up' => 
  array (
    0 => 'migration83.php',
    1 => 'Migration de PHP 8.2.x vers PHP 8.3.x',
  ),
  'prev' => 
  array (
    0 => 'migration83.deprecated.php',
    1 => 'Fonctionnalit&eacute;s d&eacute;pr&eacute;ci&eacute;es',
  ),
  'next' => 
  array (
    0 => 'migration83.windows-support.php',
    1 => 'Support Windows',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'appendices/migration83/other-changes.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration83.other-changes" class="sect1">
 <h2 class="title">Autres changements</h2>

 <div class="sect2" id="migration83.other-changes.core">
  <h3 class="title">Changements du cœur</h3>

  <div class="sect3" id="migration83.other-changes.core.ffi">
   <h4 class="title">FFI</h4>

   <p class="para">
    <span class="methodname"><a href="ffi.load.php" class="methodname">FFI::load()</a></span> est désormais autorisé pendant le préchargement
    quand <a href="opcache.configuration.php#ini.opcache.preload-user" class="link">opcache.preload_user</a>
    est l&#039;utilisateur système actuel. Précédemment,
    appeler <span class="methodname"><a href="ffi.load.php" class="methodname">FFI::load()</a></span> n&#039;était pas possible
    pendant le préchargement si la directive
    <a href="opcache.configuration.php#ini.opcache.preload-user" class="link">opcache.preload_user</a>
    était définie.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.core.fpm">
   <h4 class="title">FPM</h4>

   <p class="para">
    Les tests FPM CLI échouent désormais si le chemin du socket est plus long que ce que l&#039;OS supporte.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.core.opcache">
   <h4 class="title">Opcache</h4>

   <p class="para">
    Dans les SAPI CLI et phpdbg, le préchargement ne nécessite plus
    que la directive <a href="opcache.configuration.php#ini.opcache.preload-user" class="link">opcache.preload_user</a>
    soit définie lorsque PHP est exécuté en tant que root.
    Dans les autres SAPI, cette directive est requise lorsque PHP est exécuté en tant que root
    car le préchargement est effectué avant que le SAPI ne passe à un utilisateur non privilégié.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.core.streams">
   <h4 class="title">Streams</h4>

   <p class="para">
    Bloquer <span class="function"><a href="function.fread.php" class="function">fread()</a></span> sur une connexion de socket retourne
    immédiatement s&#039;il y a des données tamponnées au lieu d&#039;attendre plus de données.
   </p>

   <p class="para">
    Un stream de mémoire ne retourne plus d&#039;erreur si le décalage de recherche est au-delà de la fin.
    À la place, la mémoire sera augmentée à la prochaine écriture et les données entre
    l&#039;ancienne fin et le décalage sont remplies de zéros, similaire à la façon dont les fichiers fonctionnent.
   </p>

   <p class="para">
    Les opérations d&#039;accès <span class="function"><a href="function.stat.php" class="function">stat()</a></span> comme
    <span class="function"><a href="function.file-exists.php" class="function">file_exists()</a></span> et similaires utiliseront désormais le chemin réel
    au lieu du chemin du stream. Ceci est cohérent avec l&#039;ouverture
    du stream.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration83.other-changes.sapi">
  <h3 class="title">Changement dans les modules SAPI</h3>

  <div class="sect3" id="migration83.other-changes.sapi.cli">
   <h4 class="title">CLI</h4>

   <p class="para">
    Les streams <strong><code><a href="reserved.constants.php#constant.stdout">STDOUT</a></code></strong>, <strong><code><a href="reserved.constants.php#constant.stderr">STDERR</a></code></strong> et
    <strong><code><a href="reserved.constants.php#constant.stdin">STDIN</a></code></strong> ne sont plus fermés à la destruction de la ressource
    qui est principalement lorsque le CLI se termine.
    Il est cependant toujours possible de fermer explicitement ces streams en utilisant
    <span class="function"><a href="function.fclose.php" class="function">fclose()</a></span> et similaires.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration83.other-changes.functions">
  <h3 class="title">Fonctions changées</h3>

  <div class="sect3" id="migration83.other-changes.functions.core">
   <h4 class="title">Core</h4>

   <p class="para">
    <span class="function"><a href="function.gc-status.php" class="function">gc_status()</a></span> a ajouté les 8 champs suivants:

    <ul class="simplelist">
     <li><code class="literal">&quot;running&quot;</code> => bool</li>
     <li><code class="literal">&quot;protected&quot;</code> => bool</li>
     <li><code class="literal">&quot;full&quot;</code> => bool</li>
     <li><code class="literal">&quot;buffer_size&quot;</code> => int</li>
     <li><code class="literal">&quot;application_time&quot;</code> => float: Le temps total d'application,
     en secondes (y compris le temps de collecte)</li>
     <li><code class="literal">&quot;collector_time&quot;</code> => float: Le temps passé à collecter
     les cycles, en secondes (y compris le temps de destructeur et le temps de libération)</li>
     <li><code class="literal">&quot;destructor_time&quot;</code> => float: Le temps passé à exécuter
     les destructeurs pendant la collecte des cycles, en secondes</li>
     <li><code class="literal">&quot;free_time&quot;</code> => float: Le temps passé à libérer les valeurs
     pendant la collecte des cycles, en secondes</li>
    </ul>
   </p>

   <p class="para">
    <span class="function"><a href="function.class-alias.php" class="function">class_alias()</a></span> supporte désormais la création d&#039;un alias sur
    les classes internes.
   </p>

   <p class="para">
    Changer <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a> à l&#039;exécution
    en utilisant <code class="code">ini_set(&#039;open_basedir&#039;, ...);</code> n&#039;accepte plus les chemins
    contenant le répertoire parent (<code class="literal">..</code>). Précédemment,
    seuls les chemins commençant par <code class="literal">..</code> étaient interdits. Ceci
    pouvait facilement être contourné en préfixant le chemin par <code class="literal">./</code>.
   </p>

   <p class="para">
    Les gestionnaires d&#039;exceptions utilisateur attrapent désormais les exceptions pendant l&#039;arrêt.
   </p>

   <p class="para">
    Le HTML résultant de <span class="function"><a href="function.highlight-string.php" class="function">highlight_string()</a></span> et
    <span class="function"><a href="function.highlight-file.php" class="function">highlight_file()</a></span> a changé.
    Les espaces entre les balises HTML extérieures sont supprimés. Les sauts de ligne et les espaces
    ne sont plus convertis en entités HTML. Tout le HTML est maintenant enveloppé dans une balise
    <code class="literal">&lt;pre&gt;</code>. La balise <code class="literal">&lt;span&gt;</code> extérieure a été fusionnée
    avec la balise <code class="literal">&lt;code&gt;</code>.
   </p>

  </div>

  <div class="sect3" id="migration83.other-changes.functions.calendar">
   <h4 class="title">Calendar</h4>

   <p class="para">
    <span class="function"><a href="function.easter-date.php" class="function">easter_date()</a></span> supporte désormais les années de 1970 à
    2 000 000 000 sur les systèmes 64 bits, précédemment il ne supportait que
    les années de 1970 à 2037.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.curl">
   <h4 class="title">Curl</h4>

   <p class="para">
    <span class="function"><a href="function.curl-getinfo.php" class="function">curl_getinfo()</a></span> supporte désormais deux nouvelles constantes :
    <strong><code><a href="curl.constants.php#constant.curlinfo-capath">CURLINFO_CAPATH</a></code></strong> et
    <strong><code><a href="curl.constants.php#constant.curlinfo-cainfo">CURLINFO_CAINFO</a></code></strong>. Si option est <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, les deux clés
    suivantes sont présentes :
    <code class="literal">&quot;capath&quot;</code> et <code class="literal">&quot;cainfo&quot;</code>.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.dom">
   <h4 class="title">DOM</h4>

   <p class="para">
    Le type de retour de <span class="methodname"><a href="domcharacterdata.appenddata.php" class="methodname">DOMCharacterData::appendData()</a></span> a été changé
    en <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span>.
   </p>

   <p class="para">
    <span class="methodname"><a href="domdocument.loadhtml.php" class="methodname">DOMDocument::loadHTML()</a></span>,
    <span class="methodname"><a href="domdocument.loadhtmlfile.php" class="methodname">DOMDocument::loadHTMLFile()</a></span>, et
    <span class="methodname"><a href="domdocument.loadxml.php" class="methodname">DOMDocument::loadXML()</a></span> ont désormais un type de
    retour provisoire de <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>. Précédemment, cela était documenté
    comme ayant un type de retour de <code class="code">DOMDocument|bool</code>, mais, à partir de PHP 8.0.0,
    <span class="classname"><a href="class.domdocument.php" class="classname">DOMDocument</a></span>
    ne peut pas être retourné car il n&#039;est plus statiquement appelable.
   </p>

  </div>

  <div class="sect3" id="migration83.other-changes.functions.gd">
   <h4 class="title">Gd</h4>

   <p class="para">
    La signature de <span class="function"><a href="function.imagerotate.php" class="function">imagerotate()</a></span> a changé.
    Le paramètre <code class="parameter">$ignore_transparent</code> a été supprimé,
    car il était ignoré à partir de PHP 5.5.0.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.intl">
   <h4 class="title">Intl</h4>

   <p class="para">
    <span class="function"><a href="intldateformatter.settimezone.php" class="function">datefmt_set_timezone()</a></span> (et ses alias
    <span class="methodname"><a href="intldateformatter.settimezone.php" class="methodname">IntlDateformatter::setTimeZone()</a></span>)
    retourne désormais <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en cas de succès, avant <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> était retourné.
   </p>

   <p class="para">
    <span class="methodname"><a href="intlbreakiterator.settext.php" class="methodname">IntlBreakiterator::setText()</a></span> retourne désormais <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
    en cas d&#039;échec, précédemment <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> était retourné.
    Il retourne désormais <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en cas de succès, précédemment <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> était retourné.
   </p>

   <p class="para">
    <span class="methodname"><a href="intlchar.enumcharnames.php" class="methodname">IntlChar::enumCharNames()</a></span> retourne désormais un booléen.
    Précédemment, il retournait <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> en cas de succès et <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> en cas d&#039;échec.
   </p>

   <p class="para">
    <span class="methodname"><a href="intldateformatter.create.php" class="methodname">IntlDateFormatter::__construct()</a></span> lance une exception <strong><code><a href="intl.constants.php#constant.u-illegal-argument-error">U_ILLEGAL_ARGUMENT_ERROR</a></code></strong>
    lorsqu&#039;une locale invalide a été définie.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.mbstring">
   <h4 class="title">MBString</h4>

   <p class="para">
    <span class="function"><a href="function.mb-strtolower.php" class="function">mb_strtolower()</a></span> et <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span>
    implémentent des règles de casse conditionnelles pour la lettre grecque sigma.
    Pour <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span>,
    la casse conditionnelle s&#039;applique uniquement aux modes <strong><code><a href="mbstring.constants.php#constant.mb-case-lower">MB_CASE_LOWER</a></code></strong>,
    et <strong><code><a href="mbstring.constants.php#constant.mb-case-title">MB_CASE_TITLE</a></code></strong>, pas aux modes
    <strong><code><a href="mbstring.constants.php#constant.mb-case-lower-simple">MB_CASE_LOWER_SIMPLE</a></code></strong> et
    <strong><code><a href="mbstring.constants.php#constant.mb-case-title-simple">MB_CASE_TITLE_SIMPLE</a></code></strong>.
   </p>

   <p class="para">
    <span class="function"><a href="function.mb-decode-mimeheader.php" class="function">mb_decode_mimeheader()</a></span> interprète les tirets bas dans
    les mots encodés MIME QPrint comme requis par la RFC 2047 ; ils sont
    convertis en espaces.
    Les tirets bas doivent être encodés en <code class="literal">&quot;=5F&quot;</code> dans de tels mots
    encodés MIME.
   </p>

   <p class="para">
    Dans de rares cas, <span class="function"><a href="function.mb-encode-mimeheader.php" class="function">mb_encode_mimeheader()</a></span> va encoder
    sa chaîne de caractères d&#039;entrée là où elle la passerait en ASCII brut en PHP 8.2.
   </p>

   <p class="para">
    <span class="function"><a href="function.mb-encode-mimeheader.php" class="function">mb_encode_mimeheader()</a></span> ne supprime plus les octets NUL
    (zéro) lors de l&#039;encodage QPrint de la chaîne d&#039;entrée.
    Cela corrompait précédemment les chaînes dans certains encodages de texte,
    en particulier UTF-16 et UTF-32, par mb_encode_mimeheader.
   </p>

   <p class="para">
    <span class="function"><a href="function.mb-detect-encoding.php" class="function">mb_detect_encoding()</a></span> en mode &quot;non-strict&quot; se comporte
    désormais comme décrit dans la documentation.
    Auparavant, il retournait <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si le même octet (par exemple, le premier
    octet) de la chaîne d&#039;entrée était invalide dans tous les encodages candidats.
    Plus généralement, il éliminait les encodages candidats de la considération
    lorsqu&#039;un octet invalide était vu, et si le même octet d&#039;entrée éliminait
    tous les encodages restants encore sous considération, il retournait <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
    D&#039;autre part, si tous les encodages candidats sauf un étaient éliminés
    de la considération, il retournait le dernier restant sans tenir compte
    du nombre d&#039;erreurs d&#039;encodage qui pourraient être rencontrées plus tard dans la chaîne.
    Ceci est différent du comportement décrit dans la documentation, qui
    dit : &quot;Si strict est défini sur false, l&#039;encodage le plus proche
    sera retourné.&quot;
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.mysqli">
   <h4 class="title">mysqli</h4>

   <p class="para">
    <span class="function"><a href="mysqli-result.fetch-object.php" class="function">mysqli_fetch_object()</a></span> lance désormais une
    <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> au lieu d&#039;une <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span>
    lorsque l&#039;argument <code class="parameter">$constructor_args</code> n&#039;est pas vide
    avec la classe n&#039;ayant pas de constructeur.
   </p>

   <p class="para">
    <span class="function"><a href="mysqli.poll.php" class="function">mysqli_poll()</a></span> lance désormais une <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
    lorsque ni l&#039;argument <code class="parameter">$read</code>
    ni l&#039;argument <code class="parameter">$error</code> ne sont passés.
   </p>

   <p class="para">
    <span class="function"><a href="mysqli-result.field-seek.php" class="function">mysqli_field_seek()</a></span> et
    <span class="methodname"><a href="mysqli-result.field-seek.php" class="methodname">mysqli_result::field_seek()</a></span> précise désormais le type
    de retour comme <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> au lieu de <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.odbc">
   <h4 class="title">ODBC</h4>

   <p class="para">
    <span class="function"><a href="function.odbc-autocommit.php" class="function">odbc_autocommit()</a></span> accepte désormais <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> pour le
    paramètre <code class="parameter">$enable</code>.
    Passer <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> a le même comportement que passer un seul paramètre,
    indiquant si la fonctionnalité autocommit est activée ou non.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.pgsql">
   <h4 class="title">PGSQL</h4>

   <p class="para">
    <span class="function"><a href="function.pg-fetch-object.php" class="function">pg_fetch_object()</a></span> lance désormais une
    <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> à la place d&#039;une <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span>
    lorsque l&#039;argument <code class="parameter">$constructor_args</code> n&#039;est pas vide
    avec la classe n&#039;ayant pas de constructeur.
   </p>

   <p class="para">
    <span class="function"><a href="function.pg-insert.php" class="function">pg_insert()</a></span> lance désormais une <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
    au lieu d&#039;une <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span> lorsque la table spécifiée est invalide.
   </p>

   <p class="para">
    <span class="function"><a href="function.pg-insert.php" class="function">pg_insert()</a></span> et <span class="function"><a href="function.pg-convert.php" class="function">pg_convert()</a></span> lancent
    une <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> ou une <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>
    à la place d&#039;un <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> lorsque la valeur/type d&#039;un champ
    ne correspond pas correctement au type de PostgreSQL.
   </p>

   <p class="para">
    Le paramètre <code class="parameter">$row</code> de
    <span class="function"><a href="function.pg-fetch-result.php" class="function">pg_fetch_result()</a></span>,
    <span class="function"><a href="function.pg-field-prtlen.php" class="function">pg_field_prtlen()</a></span>, et
    <span class="function"><a href="function.pg-field-is-null.php" class="function">pg_field_is_null()</a></span> est désormais nullable.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.random">
   <h4 class="title">Random</h4>

   <p class="para">
    Changement de <span class="function"><a href="function.mt-srand.php" class="function">mt_srand()</a></span> et <span class="function"><a href="function.srand.php" class="function">srand()</a></span> pour
    ne pas vérifier le nombre d&#039;arguments pour déterminer si une graine
    aléatoire doit être utilisée. Passer <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> générera une graine aléatoire, <code class="literal">0</code>
    utilisera zéro comme graine. Les fonctions sont désormais cohérentes avec
    <span class="methodname"><a href="random-engine-mt19937.construct.php" class="methodname">Random\Engine\Mt19937::__construct()</a></span>.
   </p>

  </div>

  <div class="sect3" id="migration83.other-changes.functions.reflection">
   <h4 class="title">Reflection</h4>

   <p class="para">
    Le type de retour de <span class="methodname"><a href="reflectionclass.getstaticproperties.php" class="methodname">ReflectionClass::getStaticProperties()</a></span>
    n&#039;est désormais plus nullable.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.functions.standard">
   <h4 class="title">Standard</h4>

   <p class="para">
    Le <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong> émis par <span class="function"><a href="function.unserialize.php" class="function">unserialize()</a></span>
    a été promu en <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>.
    
   </p>

   <p class="para">
    <span class="function"><a href="function.unserialize.php" class="function">unserialize()</a></span> émet désormais un <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>
    si l&#039;entrée contient des octets non consommés.
    
   </p>

   <p class="para">
    <span class="function"><a href="function.array-pad.php" class="function">array_pad()</a></span> n&#039;est désormais limité que par le nombre maximum
    d&#039;éléments qu&#039;un tableau peut contenir. Auparavant, il était seulement possible
    d&#039;ajouter au plus 1 048 576 éléments à la fois.
   </p>

   <p class="para">
    <span class="function"><a href="function.strtok.php" class="function">strtok()</a></span> lance maintenant un <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> si le
    token n&#039;est pas fourni lors du démarrage de la tokenisation.
   </p>

   <p class="para">
    <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> enchaîne désormais l&#039;exception sous-jacente
    <span class="classname"><a href="class.random-randomexception.php" class="classname">Random\RandomException</a></span>
    dans la <code class="parameter">$previous</code> <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span>
    de <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> lorsque la génération de sel échoue.
   </p>

   <p class="para">
    Si un tableau est utilisé comme <code class="parameter">$command</code> pour
    <span class="function"><a href="function.proc-open.php" class="function">proc_open()</a></span>, il doit désormais avoir au moins un élément
    non vide. Sinon, une <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span>
    est lancée.
   </p>

   <p class="para">
    <span class="function"><a href="function.proc-open.php" class="function">proc_open()</a></span> retourne désormais <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si le tableau <code class="parameter">$command</code>
    est une commande invalide au lieu d&#039;un objet de ressource qui produit un avertissement plus tard.
    C&#039;était déjà le cas pour Windows, mais c&#039;est maintenant aussi le cas si une implémentation posix_spawn
    est utilisée (la plupart des plates-formes Linux, BSD et MacOS). Il reste
    quelques anciennes plates-formes où ce comportement n&#039;a pas changé car posix_spawn n&#039;est pas
    pris en charge là-bas.
   </p>

   <p class="para">
    <span class="function"><a href="function.array-sum.php" class="function">array_sum()</a></span> et <span class="function"><a href="function.array-product.php" class="function">array_product()</a></span> émettent désormais
    un avertissement lorsque les valeurs du tableau ne peuvent pas être converties en int/float.
    Auparavant, les tableaux et les objets étaient ignorés tandis que chaque autre valeur était
    convertie en int. De plus, les objets qui définissent une conversion numérique (par exemple
    <a href="book.gmp.php" class="link">GMP</a>) sont désormais convertis au lieu d&#039;être ignorés.
    
   </p>

   <p class="para">
    Le <code class="parameter">$decimals</code> de <span class="function"><a href="function.number-format.php" class="function">number_format()</a></span>
    gère désormais les entiers négatifs.
    Arrondir avec une valeur négative pour <code class="parameter">$decimals</code> signifie
    que <code class="parameter">$num</code> est arrondi à <code class="parameter">$decimals</code>
    chiffres significatifs avant le séparateur décimal.
    Auparavant, les entiers négatifs pour <code class="parameter">$decimals</code> étaient
    silencieusement ignorés et le nombre était arrondi à zéro décimales.
   </p>

   <p class="para">
    Un nouvel argument <code class="parameter">$before_needle</code> a été ajouté à
    <span class="function"><a href="function.strrchr.php" class="function">strrchr()</a></span>. Il se comporte comme son homologue dans les
    fonctions <span class="function"><a href="function.strstr.php" class="function">strstr()</a></span> ou <span class="function"><a href="function.stristr.php" class="function">stristr()</a></span>.
   </p>

   <p class="para">
    <span class="function"><a href="function.str-getcsv.php" class="function">str_getcsv()</a></span> et <span class="function"><a href="function.fgetcsv.php" class="function">fgetcsv()</a></span> retournent désormais
    une chaîne vide au lieu d&#039;une chaîne avec un seul octet nul pour le dernier champ
    qui ne contient qu&#039;une enceinte non terminée.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration83.other-changes.extensions">
  <h3 class="title">Autres changements aux extensions</h3>

  <div class="sect3" id="migration83.other-changes.extensions.core">
   <h4 class="title">Core</h4>

   <p class="para">
    Utiliser les opérateurs d&#039;<a href="language.operators.increment.php" class="link">incrémentation/décrémentation</a>
    (<code class="literal">++</code>/<code class="literal">--</code>) sur des valeurs de type
    <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> émet désormais des avertissements.
    Cela est dû au fait que cela n&#039;a actuellement aucun effet, mais se comportera comme
    <code class="code">$bool += 1</code> à l&#039;avenir.
   </p>

   <p class="para">
    Utiliser l&#039;opérateur de <a href="language.operators.increment.php" class="link">décrémentation</a>
    (<code class="literal">--</code>) sur des valeurs de type <span class="type"><a href="language.types.null.php" class="type null">null</a></span> émet désormais des avertissements.
    Cela est dû au fait que cela n&#039;a actuellement aucun effet, mais se comportera comme
    <code class="code">$null -= 1</code> à l&#039;avenir.
   </p>

   <p class="para">
    Les objets internes qui implémentent un cast _IS_NUMBER mais pas un gestionnaire do_operator
    qui remplace l&#039;addition et la soustraction peuvent désormais être incrémentés et décrémentés
    comme si on faisait <code class="code">$o += 1</code> ou <code class="code">$o -= 1</code>.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.extensions.dom">
   <h4 class="title">DOM</h4>

   <p class="para">
    Le mécanisme de durée de vie du DOM a été retravaillé de telle sorte que les nœuds
    implicitement supprimés peuvent toujours être récupérés. Auparavant, cela entraînait une exception.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.extensions.sqlite3">
   <h4 class="title">SQLite3</h4>

   <p class="para">
    La classe <span class="classname"><a href="class.sqlite3.php" class="classname">SQLite3</a></span> lance une
    <span class="classname"><a href="class.sqlite3exception.php" class="classname">SQLite3Exception</a></span> (extension de
    <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span>) à la place de <span class="classname"><a href="class.exception.php" class="classname">Exception</a></span>.
   </p>

   <p class="para">
    Le code d&#039;erreur SQLite est désormais passé dans le code d&#039;erreur de l&#039;exception
    au lieu d&#039;être inclus dans le message d&#039;erreur.
   </p>

  </div>
 </div>

 <div class="sect2" id="migration83.other-changes.ini">
  <h3 class="title">Changement de la gestion du fichier INI</h3>

  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Les paramètres INI <code class="literal">assert.*</code> ont été dépréciés.
     Cela comprend les paramètres INI suivants :
     <ul class="simplelist">
      <li><a href="info.configuration.php#ini.assert.active" class="link">assert.active</a></li>
      <li><a href="info.configuration.php#ini.assert.bail" class="link">assert.bail</a></li>
      <li><a href="info.configuration.php#ini.assert.callback" class="link">assert.callback</a></li>
      <li><a href="info.configuration.php#ini.assert.exception" class="link">assert.exception</a></li>
      <li><a href="info.configuration.php#ini.assert.warning" class="link">assert.warning</a></li>
     </ul>
     Si la valeur du paramètre est égale à la valeur par défaut, aucun avertissement de dépréciation
     n&#039;est émis.
     Le paramètre INI <a href="ini.core.php#ini.zend.assertions" class="link">zend.assertions</a>
     devrait être utilisé à la place.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <a href="info.configuration.php#ini.zend.max-allowed-stack-size" class="link">zend.max_allowed_stack_size</a>
     est une nouvelle directive INI pour définir la taille maximale de la pile autorisée.
     Les valeurs possibles sont <code class="literal">0</code> (détecter la taille maximale de la pile du processus ou du thread),
     <code class="literal">-1</code> (pas de limite), ou un nombre positif d&#039;octets.
     La valeur par défaut est <code class="literal">0</code>.
     Lorsqu&#039;il n&#039;est pas possible de détecter la taille maximale de la pile du processus ou du thread,
     une valeur par défaut système connue est utilisée.
     Définir cette valeur trop élevée a le même effet que la désactivation de la limite de taille de la pile.
     Les fibres utilisent
     <a href="info.configuration.php#ini.fiber.stack-size" class="link">fiber.stack_size</a>
     comme taille de pile maximale autorisée.
     Une <span class="classname"><a href="class.error.php" class="classname">Error</a></span> est lancée lorsque la pile d&#039;appel du processus dépasse
     <a href="info.configuration.php#ini.zend.max-allowed-stack-size" class="link">zend.max_allowed_stack_size</a>-<a href="info.configuration.php#ini.zend.reserved-stack-size" class="link">zend.reserved_stack_size</a>
     octets, pour éviter les erreurs de segmentation dues à un dépassement de pile,
     dans le but de faciliter le débogage.
     La taille de la pile augmente pendant les récursions non contrôlées impliquant des fonctions internes
     ou les méthodes magiques
     <a href="language.oop5.magic.php#object.tostring" class="link">__toString()</a>,
     <a href="language.oop5.cloning.php#object.clone" class="link">__clone()</a>,
     <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a>,
     <a href="language.oop5.decon.php#object.destruct" class="link">__destruct()</a>.
     Cela n&#039;est pas lié aux débordements de tampon de pile, et n&#039;est pas une fonctionnalité de sécurité.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <a href="info.configuration.php#ini.zend.reserved-stack-size" class="link">zend.reserved_stack_size</a>
     est une nouvelle directive INI pour définir la taille de la pile réservée, en octets.
     Cela est soustrait de la taille maximale de la pile
     autorisée, en tant que tampon, lors de la vérification de la taille de la pile.
    </p>
   </li>
   </ul>
 </div>

 <div class="sect2" id="migration83.other-changes.performance">
  <h3 class="title">Performance</h3>

  <div class="sect3" id="migration83.other-changes.performance.dom">
   <h4 class="title">DOM</h4>

   <p class="para">
    Itérer sur un <span class="classname"><a href="class.domnodelist.php" class="classname">DOMNodeList</a></span> utilise désormais un cache. Par conséquent,
    demander des éléments ne prend plus de temps quadratique par défaut.
   </p>

   <p class="para">
    Obtenir le contenu textuel des nœuds évite désormais une allocation, ce qui entraîne
    un gain de performance.
   </p>

   <p class="para">
    <span class="methodname"><a href="domchildnode.remove.php" class="methodname">DOMChildNode::remove()</a></span> s&#039;exécute désormais en O(1) performance.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.performance.standard">
   <h4 class="title">Standard</h4>

   <p class="para">
    Le drapeau <span class="function"><a href="function.file.php" class="function">file()</a></span> pour la vérification des erreurs est désormais environ 7% plus rapide.
   </p>
  </div>

  <div class="sect3" id="migration83.other-changes.performance.spl">
   <h4 class="title">SPL</h4>

   <p class="para">
    <span class="classname"><a href="class.recursivedirectoryiterator.php" class="classname">RecursiveDirectoryIterator</a></span> effectue désormais moins d&#039;E/S
    lors du parcours d&#039;un répertoire.
   </p>
  </div>
 </div>

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