<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reserved.interfaces.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'class.serializable.php',
    1 => 'Serializable',
    2 => 'Das Serializable-Interface',
  ),
  'up' => 
  array (
    0 => 'reserved.interfaces.php',
    1 => 'Vordefinierte Interfaces und Klassen',
  ),
  'prev' => 
  array (
    0 => 'arrayaccess.offsetunset.php',
    1 => 'ArrayAccess::offsetUnset',
  ),
  'next' => 
  array (
    0 => 'serializable.serialize.php',
    1 => 'Serializable::serialize',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/predefined/serializable.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/class.serializable.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="class.serializable" class="reference">

 <h1 class="title">Das Serializable-Interface</h1>
 

 <div class="partintro"><p class="verinfo">(PHP 5 &gt;= 5.1.0, PHP 7, PHP 8)</p>


  <div class="section" id="serializable.intro">
   <h2 class="title">Einführung</h2>
   <p class="para">
    Interface für benutzerdefiniertes Serialisieren.
   </p>

   <p class="para">
    Die Klassen, die dieses Interface implementieren, unterstützen
    <a href="language.oop5.magic.php#object.sleep" class="link">__sleep</a> und
    <a href="language.oop5.magic.php#object.wakeup" class="link">__wakeup</a> nicht mehr. Die Methode
    serialize wird immer aufgerufen, wenn eine Instanz serialisiert werden
    muss. Dabei wird weder __destruct() aufgerufen noch irgend ein anderer
    Nebeneffekt erzeugt, es sei denn, ein solcher wird in der Methode
    serialize explizit erzeugt. Wenn die Daten deserialisiert werden, ist die
    Klasse bekannt und die passende unserialize()-Methode wird anstelle des
    Konstruktors __construct() aufgerufen. Falls notwendig, kann der
    Standardkonstruktor innerhalb von unserialize() aufgerufen werden.
   </p>

   <div class="warning"><strong class="warning">Warnung</strong>
    <p class="para">
     Seit PHP 8.1.0 erzeugt eine Klasse, die
     <span class="interfacename"><strong class="interfacename">Serializable</strong></span> implementiert, ohne
     gleichzeitig auch <a href="language.oop5.magic.php#object.serialize" class="link">__serialize()</a>
     und <a href="language.oop5.magic.php#object.unserialize" class="link">__unserialize()</a> zu
     implementieren, eine Deprecated- (veraltet) Warnung.
    </p>
   </div>
  </div>


  <div class="section" id="serializable.synopsis">
   <h2 class="title">Interface-Übersicht</h2>


   <div class="classsynopsis"><div class="classsynopsisinfo">
    
     <span class="modifier">interface</span> <strong class="interfacename"><strong class="interfacename">Serializable</strong></strong> {</div>

    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Methoden */</div>
    <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><a href="serializable.serialize.php" class="methodname">serialize</a></span>(): <span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="methodname"><a href="serializable.unserialize.php" class="methodname">unserialize</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$data</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

   }</div>


  </div>

  <div class="section" id="serializable.examples">
   <h2 class="title">Beispiele</h2>
   <div class="example" id="serializable.example.basic">
    <p><strong>Beispiel #1 Grundlegende Verwendung</strong></p>
    <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">obj </span><span style="color: #007700">implements </span><span style="color: #0000BB">Serializable </span><span style="color: #007700">{<br />    private </span><span style="color: #0000BB">$data</span><span style="color: #007700">;<br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">() {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data </span><span style="color: #007700">= </span><span style="color: #DD0000">"Meine private-Daten"</span><span style="color: #007700">;<br />    }<br />    public function </span><span style="color: #0000BB">serialize</span><span style="color: #007700">() {<br />        return </span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">);<br />    }<br />    public function </span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data </span><span style="color: #007700">= </span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br />    }<br />    public function </span><span style="color: #0000BB">getData</span><span style="color: #007700">() {<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">obj</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$ser </span><span style="color: #007700">= </span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$ser</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$newobj </span><span style="color: #007700">= </span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$ser</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$newobj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getData</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
string(42) &quot;C:3:&quot;obj&quot;:27:{s:19:&quot;Meine private-Daten&quot;;}&quot;
string(19) &quot;Meine private-Daten&quot;
</pre></div>
    </div>
   </div>
  </div>


 </div>

 








 









<h2>Inhaltsverzeichnis</h2><ul class="chunklist chunklist_reference"><li><a href="serializable.serialize.php">Serializable::serialize</a> — Die String-Darstellung eines Objekts</li><li><a href="serializable.unserialize.php">Serializable::unserialize</a> — Erstellt das Objekt</li></ul>
</div>
<?php manual_footer($setup); ?>