Les changements du modĂšle objet de PHP sont recensĂ©s ici. Plus d'informations et autres notes peuvent ĂȘtre trouvĂ©es dans la documentation sur la POO en PHP.
| Version | Description |
|---|---|
| 8.4.0 | Ajout : Support pour les hooks de propriété. |
| 8.4.0 | Ajout : Support des objets paresseux. |
| 8.1.0 | Ajout : Support pour le modificateur final pour les constantes de classe. De plus, les constantes d'interfaces peuvent ĂȘtre redĂ©finies par dĂ©faut. |
| 8.0.0 | Ajout : Support de l'opĂ©rateur nullsafe ?-> pour accĂ©der aux propriĂ©tĂ©s et mĂ©thodes sur des objets qui peuvent ĂȘtre null. |
| 7.4.0 | Changement : Il est désormais possible de lancer des exceptions au sein de __toString(). |
| 7.4.0 | Ajout : Support limité pour la covariance du type de retour et contravariance pour le type d'argument. Le support complet de variance est uniquement disponible si l'autochargement est utilisé. à l'intérieur d'un fichier unique seules les références non-cycliques de type sont possibles. |
| 7.4.0 | Ajout : Il est désormais possible de typer les propriétés de classe. |
| 7.3.0 | Incompatibilité : Le déballage d'argument de Traversables avec des clés non-entieres n'est plus supporté. Ce comportement n'était pas prévu et par conséquent supprimé. |
| 7.3.0 | 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é. |
| 7.3.0 |
Changement : L'opérateur
instanceof autorise désormais des littéraux comme premier
opérande, dans ce cas le résultat est toujours false.
|
| 7.2.0 | ObsolÚte : La méthode __autoload() a été rendue obsolÚte en faveur de spl_autoload_register(). |
| 7.2.0 |
Changement : Le nom suivant ne peut pas ĂȘtre utilisĂ© pour nommer
des classes, interfaces ou traits : object.
|
| 7.2.0 | Changement : Une virgule finale peut dĂ©sormais ĂȘtre ajoutĂ©e Ă la syntaxe use groupĂ©e pour les espaces de noms. |
| 7.2.0 | Changement : Ălargissement du type des paramĂštres. Les types des paramĂštres des mĂ©thodes réécrites et d'implĂ©mentation d'interface peuvent dĂ©sormais ĂȘtre omis. |
| 7.2.0 | Changement : Les mĂ©thodes abstraites peuvent dĂ©sormais ĂȘtre réécrites quand une classe abstraite Ă©tend une autre classe abstraite. |
| 7.1.0 |
Changement : Les noms suivants ne peuvent pas ĂȘtre utilisĂ©s pour nommer
des classes, interfaces ou traits : void
et iterable.
|
| 7.1.0 | Ajout : Il est désormais possible de définir la visibilité des constantes de classe. |
| 7.0.0 | ObsolÚte : Appel statique à des méthodes qui ne sont pas déclarées comme statique. |
| 7.0.0 | ObsolĂšte : Constructeur style PHP 4. C.Ă .d. les mĂ©thodes qui ont le mĂȘme nom que la classe dans laquelle elles sont dĂ©finies. |
| 7.0.0 | Ajout : DĂ©claration use groupĂ©e : 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. |
| 7.0.0 |
Ajout : Support pour les
classes anonymes
a été ajouté grùce à new class.
|
| 7.0.0 | IncompatibilitĂ© : ItĂ©rer sur un objet non- Traversable aura dĂ©sormais le mĂȘme comportement qu'itĂ©rer sur les tableaux par rĂ©fĂ©rence. |
| 7.0.0 | Changement : La définition de propriétés (compatibles) dans deux traits utilisés ne déclenche plus d'erreur. |
| 5.6.0 | Ajout : La méthode __debugInfo(). |
| 5.5.0 | Ajout : La constante magique ::class. |
| 5.5.0 | Ajout : finally pour gérer les exceptions. |
| 5.4.0 | Ajout : traits. |
| 5.4.0 | Changement : Si une classe abstraite définit une signature pour le constructeur , celle-ci sera désormais appliquée. |
| 5.3.3 | Changement : Les mĂ©thodes ayant le mĂȘme nom que le dernier Ă©lĂ©ment dans un espace de noms ne sont plus considĂ©rĂ©es comme un constructeur. Ce changement n'affecte pas les classes sans espace de noms. |
| 5.3.0 | 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'interface. |
| 5.3.0 |
Changement : Il est désormais possible de référencer une classe en
utilisant une variable (e.g. :
echo $classname::constant;).
La valeur de la variable ne peut ĂȘtre un mot-clĂ© (e.g. :
self,
parent ou static).
|
| 5.3.0 |
Changement : Une erreur de niveau E_WARNING est
émise si les méthodes magiques de
surcharge sont
déclarées comme statiques.
La visibilité publique est aussi requise.
|
| 5.3.0 | Changement : avant 5.3.0, les exceptions lancĂ©es dans la fonction __autoload() ne pouvaient ĂȘtre traitĂ©es dans un bloc catch et rĂ©sultaient en une erreur fatale. Ă prĂ©sent, les exceptions lancĂ©es dans la fonction __autoload peuvent ĂȘtre attrapĂ©es dans un bloc catch 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'exception personnalisĂ©e. |
| 5.3.0 | Ajout : La méthode __callStatic. |
| 5.3.0 | Ajout : heredoc et nowdoc sont supportĂ©es pour dĂ©finir les constantes de classes et les propriĂ©tĂ©s. Note : les valeurs heredoc doivent suivre les mĂȘmes rĂšgles que les chaĂźne de caractĂšres entourĂ©es de guillemets doubles (e.g. pas de variable au sein). |
| 5.3.0 | Ajout : Résolution Statique Tardive. |
| 5.3.0 | Ajout : La méthode __invoke(). |
| 5.2.0 |
Changement : La méthode __toString()
n'était appelée que lors des appels à echo ou
print.
Désormais, elle est appelée dans n'importe quel contexte de chaßne de caractÚres
(e.g. dans printf() avec le modificateur
%s) mais pas dans les autres contextes (e.g. avec
le modificateur %d).
à partir de PHP 5.2.0, convertir un objet sans méthode
__toString en chaĂźne de caractĂšres
émet une erreur E_RECOVERABLE_ERROR.
|
| 5.1.3 |
Changement : Dans les versions antérieures de PHP 5, l'utilisation de
var était considérée comme obsolÚte et émettait une
erreur E_STRICT. Ce n'est plus le cas.
|
| 5.1.0 | Changement : La méthode statique __set_state() est désormais appelée pour les classes exportées via var_export(). |
| 5.1.0 | Ajout : Des méthodes __isset() et __unset(). |