<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration82.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'migration82.incompatible.php',
    1 => 'Modifications entra&icirc;nant une incompatibilit&eacute; ascendante',
    2 => 'Modifications entra&icirc;nant une incompatibilit&eacute; ascendante',
  ),
  'up' => 
  array (
    0 => 'migration82.php',
    1 => 'Migration de PHP 8.1.x vers PHP 8.2.x',
  ),
  'prev' => 
  array (
    0 => 'migration82.constants.php',
    1 => 'Nouvelles constantes globales',
  ),
  'next' => 
  array (
    0 => 'migration82.deprecated.php',
    1 => 'Fonctionnalit&eacute;s obsol&egrave;tes',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'appendices/migration82/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration82.incompatible" class="sect1">
 <h2 class="title">Modifications entraînant une incompatibilité ascendante</h2>

 <div class="sect2" id="migration82.incompatible.date">
  <h3 class="title">Date</h3>

  <p class="para">
   <span class="methodname"><a href="datetime.createfromimmutable.php" class="methodname">DateTime::createFromImmutable()</a></span> a désormais un type de retour
   provisoire <span class="type">static</span>, auparavant c&#039;était <span class="type"><a href="class.datetime.php" class="type DateTime">DateTime</a></span>.
  </p>

  <p class="para">
   <span class="methodname"><a href="datetimeimmutable.createfrommutable.php" class="methodname">DateTimeImmutable::createFromMutable()</a></span> a désormais un type de retour
   provisoire <span class="type">static</span>, auparavant c&#039;était <span class="type"><a href="class.datetimeimmutable.php" class="type DateTimeImmutable">DateTimeImmutable</a></span>.
  </p>

  <p class="para">
   Les symboles <code class="literal">number</code> dans les <a href="datetime.formats.php#datetime.formats.relative" class="link">formats relatifs</a>
   n&#039;acceptent plus les signes multiples, par exemple <code class="literal">+-2</code>.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.odbc">
  <h3 class="title">ODBC</h3>

  <p class="para">
   L&#039;extension ODBC échappe désormais le nom d&#039;utilisateur et le mot de passe dans le cas où
   une chaîne de connexion et un nom d&#039;utilisateur/mot de passe sont transmis, et que la chaîne
   doit être ajoutée. Auparavant, les valeurs utilisateur contenant des valeurs nécessitant un échappement
   pouvaient créer une chaîne de connexion malformée ou injecter des valeurs à partir de
   données fournies par l&#039;utilisateur. Les règles d&#039;échappement devraient être identiques au comportement de
   DbConnectionOptions dans la BCL .NET.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.pdo-odbc">
  <h3 class="title">PDO_ODBC</h3>

  <p class="para">
   L&#039;extension PDO_ODBC échappe également le nom d&#039;utilisateur et le mot de passe lorsqu&#039;une
   chaîne de connexion est transmise. Voir la <a href="migration82.incompatible.php#migration82.incompatible.odbc" class="link">modification de l&#039;extension ODBC</a>
   pour plus de détails.
  </p>
 </div>

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

  <p class="para">
   <span class="function"><a href="function.glob.php" class="function">glob()</a></span> retourne désormais un <a href="language.types.array.php" class="link">tableau</a> vide si tous les chemins d&#039;accès sont
   restreints par <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
   Auparavant, elle retournait <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   De plus, un avertissement est désormais émis même si seulement quelques chemins sont restreints par
   <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
  </p>

  <p class="para">
   <span class="methodname"><a href="filesystemiterator.construct.php" class="methodname">FilesystemIterator::__construct()</a></span>: antérieur à PHP 8.2.0,
   la constante <strong><code><a href="class.filesystemiterator.php#filesystemiterator.constants.skip-dots">FilesystemIterator::SKIP_DOTS</a></code></strong> était toujours définie
   et ne pouvait pas être désactivée. Afin de conserver le comportement précédent, la constante
   doit être explicitement définie lors de l&#039;utilisation du paramètre <code class="parameter">flags</code>.
   La valeur par défaut du paramètre <code class="parameter">flags</code>
   n&#039;a pas été modifiée.
  </p>

  <p class="para">
   <span class="function"><a href="function.strtolower.php" class="function">strtolower()</a></span>,
   <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span>,
   <span class="function"><a href="function.stristr.php" class="function">stristr()</a></span>,
   <span class="function"><a href="function.stripos.php" class="function">stripos()</a></span>,
   <span class="function"><a href="function.strripos.php" class="function">strripos()</a></span>,
   <span class="function"><a href="function.lcfirst.php" class="function">lcfirst()</a></span>,
   <span class="function"><a href="function.ucfirst.php" class="function">ucfirst()</a></span>,
   <span class="function"><a href="function.ucwords.php" class="function">ucwords()</a></span>,
   et <span class="function"><a href="function.str-ireplace.php" class="function">str_ireplace()</a></span> ne sont plus sensibles à la locale.
   Elles effectuent désormais une conversion ASCII de la casse, comme si la locale était &quot;C&quot;.
   Des versions localisées de ces fonctions sont disponibles dans l&#039;<a href="book.mbstring.php" class="link">extension MBString</a>.
   De plus, <span class="function"><a href="function.array-change-key-case.php" class="function">array_change_key_case()</a></span> et le tri avec
   <strong><code><a href="array.constants.php#constant.sort-flag-case">SORT_FLAG_CASE</a></code></strong> utilisent désormais également la conversion ASCII.
  </p>

  <p class="para">
   <span class="function"><a href="function.str-split.php" class="function">str_split()</a></span> retourne désormais un <a href="language.types.array.php" class="link">tableau</a> vide pour une <a href="language.types.string.php" class="link">chaîne de caractères</a> vide.
   Auparavant, elle retournait un tableau avec une seule chaîne vide comme entrée.
   <span class="function"><a href="function.mb-str-split.php" class="function">mb_str_split()</a></span> n&#039;est pas affectée par ce changement car elle
   se comportait déjà de la sorte.
  </p>

  <p class="para">
   <span class="function"><a href="function.ksort.php" class="function">ksort()</a></span> et <span class="function"><a href="function.krsort.php" class="function">krsort()</a></span> font désormais des comparaisons numériques de chaînes de caractères
   sous <strong><code><a href="array.constants.php#constant.sort-regular">SORT_REGULAR</a></code></strong> en utilisant les règles standards de PHP 8.
  </p>

  <p class="para">
   <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span> n&#039;omet plus le backslash de tête pour les classes exportées,
   c&#039;est-à-dire qu&#039;elles sont désormais pleinement qualifiées.
  </p>
 </div>

 <div class="sect2" id="migration82.incompatible.spl">
  <h3 class="title">Bibliothèque standard de PHP (SPL)</h3>

  <p class="para">
   Les méthodes suivantes appliquent désormais leur signature :
   <ul class="simplelist">
    <li><span class="methodname"><strong>SplFileInfo::_bad_state_ex()</strong></span></li>
    <li><span class="methodname"><a href="splfileobject.getcsvcontrol.php" class="methodname">SplFileObject::getCsvControl()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fflush.php" class="methodname">SplFileObject::fflush()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.ftell.php" class="methodname">SplFileObject::ftell()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fgetc.php" class="methodname">SplFileObject::fgetc()</a></span></li>
    <li><span class="methodname"><a href="splfileobject.fpassthru.php" class="methodname">SplFileObject::fpassthru()</a></span></li>
   </ul>
  </p>

  <p class="para">
   <span class="methodname"><a href="splfileobject.haschildren.php" class="methodname">SplFileObject::hasChildren()</a></span> a désormais un type de retour
   provisoire <span class="type"><a href="language.types.singleton.php" class="type false">false</a></span>, auparavant c&#039;était <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
  </p>

  <p class="para">
   <span class="methodname"><a href="splfileobject.getchildren.php" class="methodname">SplFileObject::getChildren()</a></span> a désormais un type de retour
   provisoire <span class="type"><a href="language.types.null.php" class="type null">null</a></span>, auparavant c&#039;était
   <span class="type">?</span><span class="type"><span class="type"><a href="class.recursiveiterator.php" class="type RecursiveIterator">RecursiveIterator</a></span><span class="type"></span></span>.
  </p>

  <p class="para">
   <span class="classname"><a href="class.globiterator.php" class="classname">GlobIterator</a></span> retourne désormais un <a href="language.types.array.php" class="link">tableau</a> vide si tous les chemins d&#039;accès
   sont restreints par <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
   Auparavant, elle retournait <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   De plus, un avertissement est désormais émis même si seulement certains chemins sont restreints par
   <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
  </p>
 </div>

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