<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.oop5.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'language.oop5.changelog.php',
    1 => 'OOP-Changelog',
    2 => 'OOP-Changelog',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Klassen und Objekte',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.lazy-objects.php',
    1 => 'Lazy Objects',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Namespaces',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/oop5/changelog.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.changelog" class="sect1">
 <h2 class="title">OOP-Changelog</h2>
 <p class="para">
  Hier werden Änderungen am OOP-Modell von PHP protokolliert. Beschreibungen und
  andere Hinweise zu diesen Features werden innerhalb der OOP-Modell-Dokumentation
  dargelegt.
 </p>
 <p class="para">
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Beschreibung</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Hinzugefügt: Unterstützung für <a href="language.oop5.property-hooks.php" class="link">Eigenschafts-Hooks</a>.
      </td>
     </tr>

     <tr>
      <td>8.4.0</td>
      <td>
       Hinzugefügt: Unterstützung für <a href="language.oop5.lazy-objects.php" class="link">Verzögerte Initialisierung (Lazy Objects)</a>.
      </td>
     </tr>

     <tr>
      <td>8.1.0</td>
      <td>
       Hinzugefügt: Unterstützung für den Modifikator <span class="modifier">final</span> für Klassenkonstanten. Außerdem werden Schnittstellenkonstanten standardmäßig überschreibbar.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Hinzugefügt: Unterstützung für den <a href="language.oop5.basic.php#language.oop5.basic.nullsafe" class="link">nullsafe-Operator</a> <em>?-&gt;</em> für den Zugriff auf Eigenschaften und Methoden von Objekten, die null sein können.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Geändert: es ist nun möglich eine Exception in <span class="function"><strong>__toString()</strong></span> zu werfen.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Hinzugefügt: Unterstützung für eingeschränkte Rückgabetypkovarianz und
       Parametertypkontravarianz. Vollständige Varianzunterstützung ist nur bei
       Verwendung von Autoloading verfügbar. Innerhalb einer einzelnen Datei
       sind nur nicht-zyklische Typreferenzen möglich.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Hinzugefügt: es ist nun möglich Klasseneigenschaften zu typisieren.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Inkompatibel: das Argument-Entpacken von <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>n
       mit nicht-<a href="language.types.integer.php" class="link">Integer</a> Schlüsseln wird nicht länger unterstützt. Dieses Verhalten
       war nicht beabsichtigt und wurde daher entfernt.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Inkompatibel: in früheren Version war es möglich statische Eigenschaften durch
       Referenzzuweisung zu separieren. Dies wurde entfernt.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Geändert: der <a href="language.operators.type.php" class="link">instanceof</a>-Operator
       erlaubt nun Literale als erster Operand, in welchem Fall das Ergebnis immer <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> ist.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Missbilligt: die Funktion <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> wurde zugunsten von
       <span class="function"><a href="function.spl-autoload-register.php" class="function">spl_autoload_register()</a></span> missbilligt.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Geändert: der folgende Name kann nicht verwendet werden, um Klassen, Interfaces
       oder Traits zu benennen: <code class="literal">object</code>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Geändert: der gruppierenden Use-Syntax für Namensräume kann nun ein abschließendes Komma
       angefügt werden.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Geändert: Parametertyp-Erweiterung. Parametertypen in übersteuerten Methoden
       und Interfaceimplementierungen können nun weggelassen werden.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Geändert: abstrakte Methoden können nun übersteuert werden, wenn eine abstrakte
       Klasse eine andere abstrakte Klasse erweitert.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Geändert: folgende Namen können nicht verwendet werden, um Klassen, Interfaces
       oder Traits zu benennen: <code class="literal">void</code> und <code class="literal">iterable</code>.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Hinzugefügt: es ist nun möglich die
       <a href="language.oop5.visibility.php#language.oop5.visiblity-constants" class="link">Sichtbarkeit von Klassenkonstanten</a>
       anzugeben.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Missbilligt: <a href="language.oop5.static.php" class="link">statische</a> Aufrufe von Methoden,
       die nicht als statisch deklariert wurden.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Missbilligt: <a href="language.oop5.decon.php" class="link">Konstruktoren</a> im Stil
       von PHP 4, d. h. Methoden, die denselben Namen wie die Klasse, in der sie
       definiert wurden, haben.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Hinzugefügt: gruppierte <em>use</em> Deklaration: Klassen, Funktionen
       und Konstanten, die aus demselben Namensraum importiert werden, können nun in einer
       einzigen use-Anweisung gruppiert werden.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Hinzugefügt: Unterstützung für <a href="language.oop5.anonymous.php" class="link">anonyme Klassen</a>
       per <code class="literal">new class</code> wurde hinzugefügt.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Inkompatibel: die Iteration über ein nicht-<span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>
       <a href="language.types.object.php" class="link">Objekt</a> hat nun dasselbe Verhalten wie die Iteration über <a href="language.types.array.php" class="link">Array</a>-Referenzen.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Definieren (kompatibler) Eigenschaften in zwei verwendeten
       <a href="language.oop5.traits.php" class="link">Traits</a> erzeugt keinen Fehler mehr.
      </td>
     </tr>

     <tr>
      <td>5.6.0</td>
      <td>
       Hinzugefügt: die <a href="language.oop5.magic.php#object.debuginfo" class="link">__debugInfo()</a> Methode.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Hinzugefügt: die magische <a href="language.oop5.basic.php#language.oop5.basic.class.class" class="link">::class</a> Konstante.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       <a href="language.exceptions.php" class="link">finally</a> zur Behandlung von
       Exceptions hinzugefügt.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       <a href="language.oop5.traits.php" class="link">Traits</a> hinzugefügt.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Geändert:
       Wenn eine <a href="language.oop5.abstract.php" class="link">abstrakte</a> Klasse
       eine Signatur für den <a href="language.oop5.decon.php" class="link">Konstruktor</a> definiert,
       so wird diese nun erzwungen.
      </td>
     </tr>

     <tr>
      <td>5.3.3</td>
      <td>
       Geändert: Methoden, die den Namen des letzten Elementes eines
       Klassennamens in einem
       <a href="language.namespaces.php" class="link">Namespace</a> tragen,
       werden nicht länger als <a href="language.oop5.decon.php" class="link">Konstruktor</a> behandelt. Diese
       Änderung beeinflusst Klassen außerhalb von Namespaces nicht.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Geändert: Klassen, die Interfaces implementieren, welche Methoden mit Vorgabewerten
       in ihrem Prototypen enthalten müssen nicht mehr dem Vorgabewert des Interfaces
       entsprechen.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Geändert: Es ist nun möglich eine Klasse mittels einer Variablen
       zu referenzieren (z. B. <code class="literal">echo $classname::constant;</code>).
       Der Wert der Variable darf kein Schlüsselwort sein (z. B.
       <code class="literal">self</code>, <code class="literal">parent</code> oder
       <code class="literal">static</code>).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Geändert: Ein Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> wird
       ausgelöst, wenn die magischen Methoden für
       <a href="language.oop5.overloading.php" class="link">Überladung</a>
       als <a href="language.oop5.static.php" class="link">static</a> deklariert
       werden. Dies erzwingt auch die Anforderung nach öffentlicher
       Sichtbarkeit.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Geändert: Vor PHP 5.3.0 konnten Exceptions, die in einer
       <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span>-Funktion geworfen
       wurden, nicht mit einem <a href="language.exceptions.php" class="link">catch</a>-Block
       gefangen werden und resultierten in einem &quot;fatal error&quot;. Nun können Exceptions,
       die in einer __autoload-Funktion geworfen wurden, im
       <a href="language.exceptions.php" class="link">catch</a>-Block unter einer Bedingung
       gefangen werden. Wenn eine selbst definierte Exception geworfen wird, so muss
       diese Exception verfügbar sein. Die __autoload-Funktion kann jedoch rekursiv
       aufgerufen werden, um die Exceptionklasse automatisch zu laden.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Hinzugefügt: Die Methode <a href="language.oop5.overloading.php" class="link">__callStatic</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Hinzugefügt: Unterstützung für die
       <a href="language.types.string.php#language.types.string.syntax.heredoc" class="link">heredoc</a>-
       und <a href="language.types.string.php#language.types.string.syntax.nowdoc" class="link">nowdoc</a>-Syntax
       für <em>const</em> und Definition von Eigenschaften in einer
       Klasse. Beachten Sie: die heredoc-Werte müssen den gleichen Regeln
       wie Strings in doppelten Anführungszeichen folgen (d. h. keine Variablen
       beinhalten).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Hinzugefügt:
       <a href="language.oop5.late-static-bindings.php" class="link">Späte statische Bindung</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Hinzugefügt: Die Methode <a href="language.oop5.magic.php#object.invoke" class="link">__invoke</a>.
      </td>
     </tr>

     <tr>
      <td>5.2.0</td>
      <td>
       Geändert: Die Methode
       <a href="language.oop5.magic.php#object.tostring" class="link">__toString</a> wurde nur
       in direkter Verbindung mit <span class="function"><a href="function.echo.php" class="function">echo</a></span> oder
       <span class="function"><a href="function.print.php" class="function">print</a></span> aufgerufen. Nun wird sie in jedem
       <a href="language.types.string.php" class="link">String</a>-Kontext aufgerufen (z. B. in <span class="function"><a href="function.printf.php" class="function">printf()</a></span> mit dem
       <code class="literal">%s</code>-Modifizierer), aber nicht in anderen Kontexten
       (z. B. mit dem <code class="literal">%d</code>-Modifizierer). Von PHP 5.2.0 an löst die
       Konvertierung von <a href="language.types.object.php" class="link">Objekt</a>en ohne <a href="language.oop5.magic.php#object.tostring" class="link">__toString</a>-Methode zu
       <a href="language.types.string.php" class="link">String</a> einen Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong>
       aus.
      </td>
     </tr>

     <tr>
      <td>5.1.3</td>
      <td>
       Geändert: In vorhergehenden Versionen von PHP 5 wurde die Verwendung
       von <code class="literal">var</code> als veraltet betrachtet und löste einen
       Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong> aus. Dies ist nicht
       länger veraltet und daher wird kein Fehler mehr ausgelöst.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Geändert: Die statische Methode
       <a href="language.oop5.magic.php#object.set-state" class="link">__set_state</a>
       wird nun für Klassen aufgerufen, wenn sie durch
       <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span> exportiert werden.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Hinzugefügt: Die Methoden
       <a href="language.oop5.overloading.php#object.isset" class="link">__isset</a> und
       <a href="language.oop5.overloading.php#object.unset" class="link">__unset</a>.
      </td>
     </tr>

    </tbody>
   
  </table>

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