Rechercher une fonction PHP

Différences avec les objets

Bien que les Enums soient construites sur la base de classes et d'objets, elles ne prennent pas en charge toutes les fonctionnalités liées aux objets. En particulier, les cas d'énumérations ne peuvent pas avoir d'état.

  • Les constructeurs et les destructeurs sont interdits.
  • L'héritage n'est pas pris en charge. Les Enums ne peuvent pas étendre ou être étendues.
  • Les propriétés statiques ou d'objet ne sont pas autorisées.
  • Le clonage d'un cas d'énumération n'est pas autorisé, car les cas doivent être des instances singleton.
  • Les méthodes magiques, à l'exception de celles énumérées ci-dessous, ne sont pas autorisées.
  • Les énumérations doivent toujours être déclarées avant d'être utilisées.

Les fonctionnalités suivantes sont disponibles pour les objets et se comportent de la même manière que pour tout autre objet :

  • Méthodes publiques, privées et protégées.
  • Méthodes statiques publiques, privées et protégées.
  • Constantes publiques, privées et protégées.
  • Les Enums peuvent implémenter un nombre quelconque d'interfaces.
  • Les enums et les cas peuvent avoir des attributs qui leur sont attachés. Le filtre TARGET_CLASS inclut les Enums elles-mêmes. Le filtre cible TARGET_CLASS_CONST inclut les cas d'Enum.
  • Les méthodes magiques __call, __callStatic, et __invoke
  • Les constantes __CLASS__ et __FUNCTION__ se comportent normalement

La constante magique ::class sur un type Enum évalue le nom du type, y compris l'espace de noms, exactement comme pour un objet. La constante magique ::class sur une instance d'un cas Case évalue également le type Enum, puisqu'il s'agit d'une instance de ce type.

En outre, les cas d'énumération ne peuvent pas être instanciés directement avec new, ni avec ReflectionClass::newInstanceWithoutConstructor() de la réflexion. Ces deux méthodes entraîneront une erreur.

<?php
$clovers
= new Suit();
// Error: Cannot instantiate enum Suit
$horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor()
// Error: Cannot instantiate enum Suit
?>
Rechercher une fonction PHP

Version en cache

27/12/2024 08:28:18 Cette version de la page est en cache (à la date du 27/12/2024 08:28:18) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-language.enumerations.object-differences.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut