<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration72.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'migration72.incompatible.php',
    1 => '&Eacute;volutions incompatibles avec les versions pr&eacute;c&eacute;dentes',
    2 => '&Eacute;volutions incompatibles avec les versions pr&eacute;c&eacute;dentes',
  ),
  'up' => 
  array (
    0 => 'migration72.php',
    1 => 'Migration de PHP 7.1.x vers PHP 7.2.x',
  ),
  'prev' => 
  array (
    0 => 'migration72.constants.php',
    1 => 'Nouvelles constantes globales',
  ),
  'next' => 
  array (
    0 => 'migration72.deprecated.php',
    1 => 'Fonctionnalit&eacute;s devenues obsol&egrave;tes en PHP 7.2.x',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'appendices/migration72/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration72.incompatible" class="sect1">
 <h2 class="title">Évolutions incompatibles avec les versions précédentes</h2>

 <div class="sect2" id="migration72.incompatible.number_format-no-neg-zero">
  <h3 class="title">Empêcher <span class="function"><a href="function.number-format.php" class="function">number_format()</a></span> de retourner zéro négatif</h3>

  <p class="para">
   Auparavant, il était possible pour la fonction
   <span class="function"><a href="function.number-format.php" class="function">number_format()</a></span> de retourner <code class="literal">-0</code>.
   Bien que cela soit parfaitement valide conformément à la spécification
   IEEE 754 pour les nombres à virgule flottante, cette bizarrerie n’était pas souhaitable
   pour l’affichage des nombres mis en forme sous une forme lisible par l’homme.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">number_format</span><span style="color: #007700">(-</span><span style="color: #0000BB">0.01</span><span style="color: #007700">)); </span><span style="color: #FF8000">// maintenant affiche string(1) "0" à la place de string(2) "-0"</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration72.incompatible.object-array-casts">
  <h3 class="title">Conversion des clés numériques dans les objets et tableaux lors de cast</h3>

  <p class="para">
   Les clés numériques sont maintenant mieux appréhendées lors de cast
   d&#039;un tableau en objet et d&#039;un objet en tableau (cast explicite ou par
   la fonction <span class="function"><a href="function.settype.php" class="function">settype()</a></span>).
  </p>

  <p class="para">
   Cela signifie que les clés représentées par un entier (ou un entier sous
   forme de texte) d&#039;un tableau casté en objet sont désormais accessibles :
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// tableau vers un objet<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= [</span><span style="color: #0000BB">0 </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= (object) </span><span style="color: #0000BB">$arr</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(<br />    </span><span style="color: #0000BB">$obj</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;{</span><span style="color: #DD0000">'0'</span><span style="color: #007700">}, </span><span style="color: #FF8000">// désormais accessible<br />    </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;{</span><span style="color: #0000BB">0</span><span style="color: #007700">} </span><span style="color: #FF8000">// désormais accessible<br /></span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">L&#039;exemple ci-dessus va afficher :</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
object(stdClass)#1 (1) {
  [&quot;0&quot;]=&gt;    // désormais clé texte plutôt qu&#039;une clé entière
  int(1)
}
int(1)
int(1)
</pre></div>
   </div>
  </div>

  <p class="para">
   Et les clés au format entier (ou entier sous forme de texte) des objets convertis
   en tableaux sont désormais accessibles :
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// objet vers tableau<br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new class {<br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;{</span><span style="color: #0000BB">0</span><span style="color: #007700">} = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />    }<br />};<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= (array) </span><span style="color: #0000BB">$obj</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(<br />    </span><span style="color: #0000BB">$arr</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">], </span><span style="color: #FF8000">// désormais accessible<br />    </span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'0'</span><span style="color: #007700">] </span><span style="color: #FF8000">// désormais accessible<br /></span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">L&#039;exemple ci-dessus va afficher :</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(1) {
  [0]=&gt;    // désormais clé entière plutôt qu&#039;une clé texte
  int(1)
}
int(1)
int(1)
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration72.incompatible.no-null-to-get_class">
  <h3 class="title">Interdire de passer <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> à <span class="function"><a href="function.get-class.php" class="function">get_class()</a></span></h3>

  <p class="para">
   Auparavant, passer <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> à la fonction <span class="function"><a href="function.get-class.php" class="function">get_class()</a></span>
   retournait le nom de la classe en cours. Ce comportement a été supprimé,
   une erreur <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> est affichée à la place.
   Pour retrouver le même comportement qu&#039;avant, l’argument devrait
   simplement être supprimé.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.warn-on-non-countable-types">
  <h3 class="title">Avertir lors du comptage de types non dénombrables</h3>

  <p class="para">
   Un <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> sera émis lors de la tentative
   d&#039;utilisation de la fonction <span class="function"><a href="function.count.php" class="function">count()</a></span> sur un
   type non dénombrable (cela inclut la fonction alias
   <span class="function"><a href="function.sizeof.php" class="function">sizeof()</a></span>).
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />var_dump</span><span style="color: #007700">(<br />    </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">), </span><span style="color: #FF8000">// NULL is not countable<br />    </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">), </span><span style="color: #FF8000">// un entier n'est pas dénombrable<br />    </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">), </span><span style="color: #FF8000">// une chaîne n'est pas dénombrable<br />    </span><span style="color: #0000BB">count</span><span style="color: #007700">(new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">), </span><span style="color: #FF8000">// un objet qui n'implémente pas l'interface Countable n'est pas dénombrable<br />    </span><span style="color: #0000BB">count</span><span style="color: #007700">([</span><span style="color: #0000BB">1</span><span style="color: #007700">,</span><span style="color: #0000BB">2</span><span style="color: #007700">]) </span><span style="color: #FF8000">// un tableau est dénombrable<br /></span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">L&#039;exemple ci-dessus va afficher :</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
int(0)
int(1)
int(1)
int(1)
int(2)
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration72.incompatible.hash-ext-to-objects">
  <h3 class="title">Remplacement ext/hash de ressources en objets</h3>

  <p class="para">
   Dans le cadre de la migration à long terme des ressources, l’extension
   <a href="book.hash.php" class="link">Hash</a> a été mise à jour pour utiliser les
   objets au lieu de ressources. Le changement devrait être transparent pour
   les développeurs PHP, à l’exception où des vérifications avec
   <span class="function"><a href="function.is-resource.php" class="function">is_resource()</a></span>
   ont été faites (il sera nécessaire de remplacer par
   <span class="function"><a href="function.is-object.php" class="function">is_object()</a></span>).
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.ssl-tls-defaults">
  <h3 class="title">Améliorer les valeurs par défaut SSL/TLS</h3>

  <p class="para">
   Les modifications suivantes concernant les valeurs par défaut ont été apportées :
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <code class="literal">tls://</code> maintenant par défaut TLSv1.0 ou TLSv1.1 ou TLSv1.2
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">ssl://</code> est un alias de <code class="literal">tls://</code>
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">STREAM_CRYPTO_METHOD_TLS_*</code> constantes par défaut de
     TLSv1.0 ou TLSv1.1 + TLSv1.2, à la place de TLSv1.0 uniquement.
    </span>
   </li>
  </ul>
 </div>

 <div class="sect2" id="migration72.incompatible.gettype-on-closed-resource">
  <h3 class="title"><span class="function"><a href="function.gettype.php" class="function">gettype()</a></span> valeur de retour sur les ressources fermées</h3>

  <p class="para">
   Auparavant, l&#039;utilisation de <span class="function"><a href="function.gettype.php" class="function">gettype()</a></span> sur une ressource
   fermée retournait une chaîne <code class="literal">&quot;unknown type&quot;</code>. Maintenant,
   la chaîne <code class="literal">&quot;resource (closed)&quot;</code> sera retournée.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.is_object-on-incomplete_class">
  <h3 class="title"><span class="function"><a href="function.is-object.php" class="function">is_object()</a></span> et <span class="classname"><a href="class.php-incomplete-class.php" class="classname">__PHP_Incomplete_Class</a></span></h3>

  <p class="para">
   Auparavant, l&#039;utilisation de <span class="function"><a href="function.is-object.php" class="function">is_object()</a></span> sur la classe
   <span class="classname"><a href="class.php-incomplete-class.php" class="classname">__PHP_Incomplete_Class</a></span> retournait <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   Maintenant, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> sera retourné.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.undefined-constants">
  <h3 class="title">Augmentation du niveau d&#039;erreur des constantes non définies</h3>

  <p class="para">
   Les références non qualifiées aux constantes non définies généreront
   désormais une <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> (à la place d&#039;une <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>).
   Dans la prochaine version majeure de PHP, elles généreront une exception
   <span class="classname"><a href="class.error.php" class="classname">Error</a></span>.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.windows-support">
  <h3 class="title">Prise en charge de Windows</h3>

  <p class="para">
   Les versions minimales officiellement supportées pour Windows sont Windows 7/
   Server 2008 R2.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.trait-properties">
  <h3 class="title">Vérification des valeurs par défaut des propriétés des traits</h3>

  <p class="para">
   Les contrôles de compatibilité sur les valeurs par défaut des propriétés de trait n&#039;effectueront plus la conversion.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.object-reserved-word">
  <h3 class="title"><code class="literal">object</code> pour les noms de classes</h3>

  <p class="para">
   Le nom <code class="literal">object</code> était précédemment soft-réservé en PHP 7.0.
   Il est maintenant réservé, interdisant son utilisation comme nom de classe,
   de trait ou d&#039;interface.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.netware-support">
  <h3 class="title">Prise en charge de NetWare</h3>

  <p class="para">
   La prise en charge de NetWare a maintenant été supprimée.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.array-unique">
  <h3 class="title"><span class="function"><a href="function.array-unique.php" class="function">array_unique()</a></span> avec <strong><code><a href="array.constants.php#constant.sort-string">SORT_STRING</a></code></strong></h3>

  <p class="para">
   Alors que <span class="function"><a href="function.array-unique.php" class="function">array_unique()</a></span> avec <strong><code><a href="array.constants.php#constant.sort-string">SORT_STRING</a></code></strong>
   copiait anciennement le tableau et supprimait des éléments non uniques
   (sans emballer le tableau par la suite), maintenant un nouveau tableau
   est construit en ajoutant les éléments uniques.
   Cela peut entraîner des index numériques différents.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.bcmod-and-floats">
  <h3 class="title"><span class="function"><a href="function.bcmod.php" class="function">bcmod()</a></span> change pour des nombres décimaux</h3>

  <p class="para">
   La fonction <span class="function"><a href="function.bcmod.php" class="function">bcmod()</a></span> ne tronque plus les nombres
   fractionnaires en entiers. En tant que tel, son comportement suit maintenant
   <span class="function"><a href="function.fmod.php" class="function">fmod()</a></span>, plutôt que l&#039;opérateur <code class="literal">%</code>.
   Par exemple <code class="literal">bcmod(&#039;4&#039;, &#039;3.5&#039;)</code> retourne maintenant
   <code class="literal">0.5</code> à la place de <code class="literal">1</code>.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.hash-functions">
  <h3 class="title">Fonctions de hachage et hachages non cryptographiques</h3>

  <p class="para">
   Les fonctions <span class="function"><a href="function.hash-hmac.php" class="function">hash_hmac()</a></span>, <span class="function"><a href="function.hash-hmac-file.php" class="function">hash_hmac_file()</a></span>,
   <span class="function"><strong>hash_pbkdf2()</strong></span>, et <span class="function"><a href="function.hash-init.php" class="function">hash_init()</a></span> (avec
   <strong><code><a href="hash.constants.php#constant.hash-hmac">HASH_HMAC</a></code></strong>) n&#039;acceptent plus les hachages non cryptographiques.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.json_decode-changes">
  <h3 class="title">Options de la fonction <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span></h3>

  <p class="para">
   L&#039;option <strong><code><a href="json.constants.php#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong> de la fonction
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> est maintenant utilisée si le second paramètre
   (assoc) est <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>. Précédemment <strong><code><a href="json.constants.php#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong> a
   toujours été ignoré.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.rand-mt_rand-output">
  <h3 class="title">Sortie de <span class="function"><a href="function.rand.php" class="function">rand()</a></span> et <span class="function"><a href="function.mt-rand.php" class="function">mt_rand()</a></span></h3>

  <p class="para">
   Les séquences générées par <span class="function"><a href="function.rand.php" class="function">rand()</a></span> et
   <span class="function"><a href="function.mt-rand.php" class="function">mt_rand()</a></span> pour des cas spécifiques peuvent différer
   de PHP 7.1 sur les machines 64 bits (en raison de la correction d&#039;un bug
   dans l&#039;implémentation de la polarisation du modulo).
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.sqlsafe_mode-ini-setting">
  <h3 class="title">Suppression du paramètre INI <a href="ini.core.php#ini.sql.safe-mode" class="link"><code class="parameter">sql.safe_mode</code></a></h3>

  <p class="para">
   Le paramètre INI <code class="parameter">sql.safe_mode</code> a maintenant été supprimé.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.date_parse_from_format">
  <h3 class="title">Changement dans <span class="function"><a href="function.date-parse.php" class="function">date_parse()</a></span> et <span class="function"><a href="function.date-parse-from-format.php" class="function">date_parse_from_format()</a></span></h3>

  <p class="para">
   L&#039;élément de <code class="literal">zone</code> du tableau retourné par <span class="function"><a href="function.date-parse.php" class="function">date_parse()</a></span> et
   <span class="function"><a href="function.date-parse-from-format.php" class="function">date_parse_from_format()</a></span> représente des secondes au lieu des
   minutes, et son signe est inversé. Par exemple <code class="literal">-120</code> est
   maintenant <code class="literal">7200</code>.
  </p>
 </div>

 <div class="sect2" id="migration72.incompatible.cookie-decode">
  <h3 class="title">Cookies entrants</h3>

  <p class="para">
   À partir de PHP 7.2.34, les <em>noms</em> des cookies entrants ne sont plus
   url-décodés pour des raisons de sécurité.
  </p>
 </div>

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