<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.enumerations.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'language.enumerations.serialization.php',
    1 => 'S&eacute;rialisation',
    2 => 'S&eacute;rialisation',
  ),
  'up' => 
  array (
    0 => 'language.enumerations.php',
    1 => 'Les &eacute;num&eacute;rations',
  ),
  'prev' => 
  array (
    0 => 'language.enumerations.listing.php',
    1 => 'Liste de valeurs',
  ),
  'next' => 
  array (
    0 => 'language.enumerations.object-differences.inheritance.php',
    1 => 'Pourquoi les enums ne sont pas extensibles',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/enumerations.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.enumerations.serialization" class="sect1">
  <h2 class="title">Sérialisation</h2>

  <p class="para">
   Les énumérations sont sérialisées différemment des objets. En particulier, elles ont un nouveau code de sérialisation,
   <code class="literal">&quot;E&quot;</code>, qui spécifie le nom du cas de l&#039;énumération. La routine de désérialisation est alors
   en mesure d&#039;utiliser ce code pour définir une variable à la valeur singleton existante. Cela garantit que :
  </p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />Suit</span><span style="color: #007700">::</span><span style="color: #0000BB">Hearts </span><span style="color: #007700">=== </span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">Suit</span><span style="color: #007700">::</span><span style="color: #0000BB">Hearts</span><span style="color: #007700">));<br /><br />print </span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">Suit</span><span style="color: #007700">::</span><span style="color: #0000BB">Hearts</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// E:11:"Suit:Hearts";<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>


  <p class="para">
   Lors de la désérialisation, si un enum et un cas ne peuvent pas être trouvés pour correspondre à une valeur sérialisée,
   un avertissement sera émis et un <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> sera retourné.</p>

  <p class="para">
   Si une Enum pure est sérialisée en JSON, une erreur sera générée. Si une Enum avec valeur de base
   est sérialisée en JSON, elle sera représentée par sa valeur scalaire uniquement, dans le
   type approprié. Le comportement des deux peut être surchargé en implémentant la méthode
   <span class="classname"><a href="class.jsonserializable.php" class="classname">JsonSerializable</a></span>.
  </p>

  <p class="para">Pour <span class="function"><a href="function.print-r.php" class="function">print_r()</a></span>, la sortie d&#039;un cas d&#039;enum est légèrement différente de celle
   des objets afin de minimiser la confusion.
  </p>

  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">enum </span><span style="color: #0000BB">Foo </span><span style="color: #007700">{<br />    case </span><span style="color: #0000BB">Bar</span><span style="color: #007700">;<br />}<br /><br />enum </span><span style="color: #0000BB">Baz</span><span style="color: #007700">: </span><span style="color: #0000BB">int </span><span style="color: #007700">{<br />    case </span><span style="color: #0000BB">Beep </span><span style="color: #007700">= </span><span style="color: #0000BB">5</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">Foo</span><span style="color: #007700">::</span><span style="color: #0000BB">Bar</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">Baz</span><span style="color: #007700">::</span><span style="color: #0000BB">Beep</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Produit<br /><br />Foo Enum (<br />    [name] =&gt; Bar<br />)<br />Baz Enum:int {<br />    [name] =&gt; Beep<br />    [value] =&gt; 5<br />}<br />*/<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

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