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

contributors($setup);

?>
<div id="migration56.incompatible" class="sect1">
 <h2 class="title">Modifications entraînant une incompatibilité ascendante</h2>
 <p class="simpara">
  Bien que la plupart du code PHP 5 existant devrait fonctionner sans aucune 
  modification, il faut prendre en considération quelques incompatibilités
  ascendantes : 
 </p>

 <div class="sect2" id="migration56.incompatible.array-keys">
  <h3 class="title">Les clés des tableaux ne sont pas écrasées lors de la définition d&#039;un
   tableau comme une propriété d&#039;une classe via un tableau littéral</h3>

  <p class="para">
   Précédemment, les tableaux déclarés comme des propriétés de classe qui mixaient
   des clés explicites et implicites pouvaient voir leurs éléments écrasés sans
   avertissement si une clé explicite était identique à une clé séquentielle
   implicite. Par exemple :
  </p>

  <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">C </span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">ONE </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />    public </span><span style="color: #0000BB">$array </span><span style="color: #007700">= [<br />        </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">ONE </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'foo'</span><span style="color: #007700">,<br />        </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">,<br />        </span><span style="color: #DD0000">'quux'</span><span style="color: #007700">,<br />    ];<br />}<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">((new </span><span style="color: #0000BB">C</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">array</span><span style="color: #007700">);<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 5.5 :</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(2) {
  [0]=&gt;
  string(3) &quot;bar&quot;
  [1]=&gt;
  string(4) &quot;quux&quot;
}

</pre></div>
   </div>
   <p class="para">Résultat de l&#039;exemple ci-dessus en PHP 5.6 :</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(3) {
  [1]=&gt;
  string(3) &quot;foo&quot;
  [2]=&gt;
  string(3) &quot;bar&quot;
  [3]=&gt;
  string(4) &quot;quux&quot;
}
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.incompatible.json-decode">
  <h3 class="title">Rigueur de <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span></h3>

  <p class="para">
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> rejette maintenant les variantes non 
   écrites en minuscule des littéraux JSON <code class="literal">true</code>, 
   <code class="literal">false</code> et <code class="literal">null</code>, en accord 
   avec la spécification JSON, et <span class="function"><a href="function.json-last-error.php" class="function">json_last_error()</a></span> est
   renseignée en conséquence. Précédemment, les valeurs passées à
   <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> contenant l&#039;une 
   de ces valeurs en majuscules ou dans une casse mixte étaient acceptées.
  </p>

  <p class="para">
   Ce changement va affecter uniquement les cas où du JSON invalide serait passé 
   à <span class="function"><a href="function.json-decode.php" class="function">json_decode()</a></span> : du JSON valide ne sera pas affecté et sera
   analysé normalement.
  </p>
 </div>

 <div class="sect2" id="migration56.incompatible.peer-verification">
  <h3 class="title">
   Les gestionnaires de flux vérifient maintenant par défaut les certificats de pair
   et les noms d&#039;hôtes lors de l&#039;utilisation de SSL/TLS
  </h3>

  
<p class="para">
    Tous les flux clients cryptés activent désormais la vérification par paire par défaut.
    Par défaut, ceci va utiliser le CA OpenSSL par défaut pour vérifier la paire
    de certificat. Dans la plupart des cas, aucune modification n&#039;a besoin d&#039;être faite
    pour communiquer avec des serveurs et des certificats SSL valides, sachant que les
    distributeurs configurent généralement OpenSSL pour utiliser les CA connus.
</p>

<p class="para">
    Le CA par défaut peut être écrasé sur une base globale en utilisant les
    options de configuration openssl.cafile ou openssl.capath, ou via une requête
    basique en utilisant les options de contexte
    <a href="context.ssl.php#context.ssl.cafile" class="link"><code class="parameter">cafile</code></a> ou
    <a href="context.ssl.php#context.ssl.capath" class="link"><code class="parameter">capath</code></a>.
</p>

<p class="para">
    Bien que ce ne soit pas conseillé en général, il est possible de désactiver la
    vérification de certificats par paire pour une requête en définissant l&#039;option
    de contexte <a href="context.ssl.php#context.ssl.verify-peer" class="link"><code class="parameter">verify_peer</code></a>
    à <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, et pour désactiver la validation du nom des paires, en configurant
    l&#039;option de contexte
    <a href="context.ssl.php#context.ssl.verify-peer-name" class="link"><code class="parameter">verify_peer_name</code></a>
    à <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
</p>

 </div>

 <div class="sect2" id="migration56.incompatible.gmp">
  <h3 class="title">Les ressources <a href="book.gmp.php" class="link">GMP</a> sont maintenant des objets</h3>

  <p class="para">
   Les ressources <a href="book.gmp.php" class="link">GMP</a> sont maintenant des objets.
   L&#039;API de l&#039;extension GMP n&#039;a pas changé et le code existant devrait
   continuer à fonctionner sans modification à moins qu&#039;une vérification explicite
   ne soit faite en utilisant <span class="function"><a href="function.is-resource.php" class="function">is_resource()</a></span> ou équivalent.
  </p>
 </div>

 <div class="sect2" id="migration56.incompatible.mcrypt">
  <h3 class="title">Les fonctions <a href="book.mcrypt.php" class="link">Mcrypt</a> requièrent maintenant des clés ou IV valides</h3>

  <p class="para">
   <span class="function"><a href="function.mcrypt-encrypt.php" class="function">mcrypt_encrypt()</a></span>, <span class="function"><a href="function.mcrypt-decrypt.php" class="function">mcrypt_decrypt()</a></span>,
   <span class="function"><strong>mcrypt_cbc()</strong></span>, <span class="function"><strong>mcrypt_cfb()</strong></span>,
   <span class="function"><strong>mcrypt_ecb()</strong></span>, <span class="function"><a href="function.mcrypt-generic.php" class="function">mcrypt_generic()</a></span> et
   <span class="function"><strong>mcrypt_ofb()</strong></span> n&#039;acceptent plus de clés ou de vecteurs
   d&#039;initialisation (IVs) de tailles incorrectes, et les modes de ciphers par blocs
   qui requièrent des IVs échoueront désormais si un IV n&#039;est pas fourni.
  </p>
 </div>
 
 <div class="sect2" id="migration56.incompatible.curl">
  <h3 class="title">Téléchargement de fichiers avec <a href="book.curl.php" class="link">cURL</a></h3>

  <p class="para">
   Le téléchargement de fichier en utilisant la syntaxe @file nécessite maintenant
   que la directive CURLOPT_SAFE_UPLOAD soit définie à <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   <span class="classname"><a href="class.curlfile.php" class="classname">CURLFile</a></span> doit plutôt être utilisé à la place.
  </p>
 </div>
 
</div><?php manual_footer($setup); ?>