<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'language.oop5.changelog.php',
    1 => 'Modifications en POO (Programmation orient&eacute;e objet)',
    2 => 'Modifications en POO (Programmation orient&eacute;e objet)',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Les classes et les objets',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.lazy-objects.php',
    1 => 'Objets paresseux',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Les espaces de noms',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Modifications en POO (Programmation orientée objet)</h2>
 <p class="para">
  Les changements du modèle objet de PHP sont recensés ici. Plus d&#039;informations
  et autres notes peuvent être trouvées dans la documentation sur la POO en PHP.
 </p>
 <p class="para">
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Ajout : Support pour les <a href="language.oop5.property-hooks.php" class="link">hooks de propriété</a>.
      </td>
     </tr>

     <tr>
      <td>8.4.0</td>
      <td>
       Ajout : Support des <a href="language.oop5.lazy-objects.php" class="link">objets paresseux</a>.
      </td>
     </tr>

     <tr>
      <td>8.1.0</td>
      <td>
       Ajout : Support pour le modificateur <span class="modifier">final</span> pour les constantes de classe.
       De plus, les constantes d&#039;interfaces peuvent être redéfinies par défaut.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Ajout : Support de l&#039;opérateur <a href="language.oop5.basic.php#language.oop5.basic.nullsafe" class="link">nullsafe</a> <em>?-&gt;</em>
       pour accéder aux propriétés et méthodes sur des objets qui peuvent être null.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Changement : Il est désormais possible de lancer des exceptions au sein
       de <span class="function"><strong>__toString()</strong></span>.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Ajout : Support limité pour la covariance du type de retour et
       contravariance pour le type d&#039;argument. Le support complet de variance est
       uniquement disponible si l&#039;autochargement est utilisé. À l&#039;intérieur
       d&#039;un fichier unique seules les références non-cycliques de type sont
       possibles.
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       Ajout : Il est désormais possible de typer les propriétés de classe.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Incompatibilité : Le déballage d&#039;argument de 
       <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span>s avec des clés non-<a href="language.types.integer.php" class="link">entier</a>es n&#039;est
       plus supporté. Ce comportement n&#039;était pas prévu et par conséquent
       supprimé.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Incompatibilité : Dans les versions précédentes il était possible de
       séparer les propriétés statiques en assignant une référence.
       Ceci a été supprimé.
      </td>
     </tr>

     <tr>
      <td>7.3.0</td>
      <td>
       Changement : L&#039;opérateur <a href="language.operators.type.php" class="link">
       instanceof</a> autorise désormais des littéraux comme premier
       opérande, dans ce cas le résultat est toujours <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Obsolète : La méthode <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> a été rendue
       obsolète en faveur de <span class="function"><a href="function.spl-autoload-register.php" class="function">spl_autoload_register()</a></span>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Changement : Le nom suivant ne peut pas être utilisé pour nommer
       des classes, interfaces ou traits : <code class="literal">object</code>.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Changement : Une virgule finale peut désormais être ajoutée à la
       syntaxe use groupée pour les espaces de noms.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Changement : Élargissement du type des paramètres. Le type des
       paramètres des méthodes réécrite et d&#039;implémentation d&#039;interface
       peuvent désormais être omis.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Changement : Les méthodes abstraites peuvent désormais être réécrites
       quand une classe abstraite étend une autre classe abstraite.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Changement : Les noms suivants ne peuvent pas être utilisés pour nommer
       des classes, interfaces ou traits : <code class="literal">void</code> 
       et <code class="literal">iterable</code>.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       Ajout : Il est désormais possible de définir la
       <a href="language.oop5.visibility.php#language.oop5.visiblity-constants" class="link">visibilité des
        constantes de classe</a>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Obsolète : Appel <a href="language.oop5.static.php" class="link">statique</a>
       à des méthodes qui ne sont pas déclarées comme statique.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Obsolète : <a href="language.oop5.decon.php" class="link">Constructeur</a>
       style PHP 4. C.à.d. les méthodes qui ont le même nom que la classe
       dans laquelle elles sont définies.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Ajout : Déclaration <em>use</em> groupé : les classes,
       fonctions et constantes qui sont importées depuis un même espace de noms
       peuvent désormais être groupées ensemble en une seule déclaration use.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Ajout : Support pour les
       <a href="language.oop5.anonymous.php" class="link">classes anonymes</a>
       a été ajouté grâce à <code class="literal">new class</code>.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Incompatibilité : Itérer sur un <a href="language.types.object.php" class="link">objet</a> non-
       <span class="classname"><a href="class.traversable.php" class="classname">Traversable</a></span> aura désormais le même comportement
       qu&#039;itérer sur les <a href="language.types.array.php" class="link">tableau</a>x par référence.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Changement : La définition de propriétés (compatibles) dans deux
       <a href="language.oop5.traits.php" class="link">traits</a>
       utilisés ne déclenche plus d&#039;erreur.
      </td>
     </tr>

     <tr>
      <td>5.6.0</td>
      <td>
       Ajout : La méthode <a href="language.oop5.magic.php#object.debuginfo" class="link">__debugInfo()</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Ajout : La constante magique <a href="language.oop5.basic.php#language.oop5.basic.class.class" class="link">::class</a>.
      </td>
     </tr>

     <tr>
      <td>5.5.0</td>
      <td>
       Ajout : <a href="language.exceptions.php" class="link">finally</a> pour gérer 
       les exceptions.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Ajout : <a href="language.oop5.traits.php" class="link">traits</a>.
      </td>
     </tr>

     <tr>
      <td>5.4.0</td>
      <td>
       Changement : Si une classe
       <a href="language.oop5.abstract.php" class="link">abstraite</a> définit
       une signature pour le <a href="language.oop5.decon.php" class="link">constructeur
       </a>, celle-ci sera désormais appliquée.
      </td>
     </tr>

     <tr>
      <td>5.3.3</td>
      <td>
       Changement : Les méthodes ayant le même nom que le dernier élément dans
       un <a href="language.namespaces.php" class="link">espace de noms</a>
       ne sont plus considérées comme un <a href="language.oop5.decon.php" class="link">constructeur</a>. Ce changement
       n&#039;affecte pas les classes sans espace de noms.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Changement : Les classes qui implémentent une interface avec des méthodes
       ayant des valeurs par défaut définies dans leurs prototypes ne sont plus
       obligées de respecter les valeurs par défaut définies dans l&#039;interface.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Changement : Il est désormais possible de référencer une classe en
       utilisant une variable (e.g. :
       <code class="literal">echo $classname::constant;</code>).
       La valeur de la variable ne peut être un mot-clé (e.g. :
       <code class="literal">self</code>,
       <code class="literal">parent</code> ou <code class="literal">static</code>).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Changement : Une erreur de niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> est
       émise si les méthodes magiques de
       <a href="language.oop5.overloading.php" class="link">surcharge</a> sont
       déclarées comme <a href="language.oop5.static.php" class="link">statiques</a>.
       La visibilité publique est aussi requise.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Changement : avant 5.3.0, les exceptions lancées dans la fonction
       <span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span> ne pouvaient être traitées dans un bloc
       <a href="language.exceptions.php" class="link">catch</a> et résultaient en une
       erreur fatale. À présent, les exceptions lancées dans la fonction
       __autoload peuvent être attrapées dans un bloc
       <a href="language.exceptions.php" class="link">catch</a> et traitées.
       Si une exception personnalisée est lancée, alors sa classe doit être
       disponible. La fonction __autoload peut être utilisée récursivement pour
       autocharger la classe d&#039;exception personnalisée.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Ajout : La méthode <a href="language.oop5.overloading.php" class="link">__callStatic</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Ajout : <a href="language.types.string.php#language.types.string.syntax.heredoc" class="link">heredoc</a>
       et <a href="language.types.string.php#language.types.string.syntax.nowdoc" class="link">nowdoc</a>
       sont supportées pour définir les <em>constantes</em> de
       classes et les propriétés.
       Note : les valeurs heredoc doivent suivre les mêmes règles que les
       <a href="language.types.string.php" class="link">chaîne de caractères</a> entourées de guillemets doubles (e.g. pas de variable au sein).
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Ajout : <a href="language.oop5.late-static-bindings.php" class="link">Résolution
       Statique Tardive</a>.
      </td>
     </tr>

     <tr>
      <td>5.3.0</td>
      <td>
       Ajout : La méthode <a href="language.oop5.magic.php#object.invoke" class="link">__invoke()</a>.
      </td>
     </tr>

     <tr>
      <td>5.2.0</td>
      <td>
       Changement : La méthode <a href="language.oop5.magic.php#object.tostring" class="link">__toString()</a>
       n&#039;était appelée que lors des appels à <span class="function"><a href="function.echo.php" class="function">echo</a></span> ou
       <span class="function"><a href="function.print.php" class="function">print</a></span>.
       Désormais, elle est appelée dans n&#039;importe quel contexte de <a href="language.types.string.php" class="link">chaîne de caractères</a>
       (e.g. dans <span class="function"><a href="function.printf.php" class="function">printf()</a></span> avec le modificateur
       <code class="literal">%s</code>) mais pas dans les autres contextes (e.g. avec
       le modificateur <code class="literal">%d</code>).
       À partir de PHP 5.2.0, convertir un <a href="language.types.object.php" class="link">objet</a> sans méthode
       <a href="language.oop5.magic.php#object.tostring" class="link">__toString</a> en <a href="language.types.string.php" class="link">chaîne de caractères</a>
       émet une erreur <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong>.
      </td>
     </tr>

     <tr>
      <td>5.1.3</td>
      <td>
       Changement : Dans les versions antérieures de PHP 5, l&#039;utilisation de
       <code class="literal">var</code> était considérée comme obsolète et émettait une
       erreur <strong><code><a href="errorfunc.constants.php#constant.e-strict">E_STRICT</a></code></strong>. Ce n&#039;est plus le cas.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Changement : La méthode statique
       <a href="language.oop5.magic.php#object.set-state" class="link">__set_state()</a> est désormais
       appelée pour les classes exportées via <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span>.
      </td>
     </tr>

     <tr>
      <td>5.1.0</td>
      <td>
       Ajout : Des méthodes <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a>
       et <a href="language.oop5.overloading.php#object.unset" class="link">__unset()</a>.
      </td>
     </tr>

    </tbody>
   
  </table>

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