# ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhost — Réinitialise un objet et le marque comme paresseux

### Description

public ReflectionClass::resetAsLazyGhost(object `$object`, callable `$initializer`, int `$options` = 0): void

Réinitialise un `objet` existant et le marque comme paresseux.

Le destructeur de l'objet est appelé (s'il existe) sauf si le drapeau `ReflectionClass::SKIP_DESTRUCTOR` est spécifié. Dans le cas particulier où l'objet est un proxy initialisé, l'instance réelle est détachée du proxy. Si l'instance réelle n'est plus référencée ailleurs, son destructeur est appelé indépendamment du drapeau `SKIP_DESTRUCTOR`.

Les propriétés dynamiques sont supprimées, et la valeur des propriétés déclarées sur la classe est jetée comme si unset() était appelée, et marquée comme paresseuse. Cela implique que si l'objet est une instance d'une sous-classe avec des propriétés supplémentaires, ces propriétés ne sont pas modifiées et ne sont pas marquées comme paresseuses. Les propriétés en lecture seule ne sont pas modifiées et ne sont pas marquées comme paresseuses si elles sont `final` ou si la classe elle-même est `final`.

Si aucune propriété n'est marquée comme paresseuse, l'objet n'est pas marqué comme paresseux. Voir aussi Cycle de vie des objets paresseux.

Sinon, après l'appel de cette méthode, le comportement de l'objet est le même qu'un objet créé par ReflectionClass::newLazyGhost() (sauf pour les propriétés de sous-classe et les propriétés en lecture seule, comme décrit ci-dessus).

L'objet n'est pas remplacé par un autre, et son identité reste inchangée. Les fonctionnalités telles que spl_object_id(), spl_object_hash(), SplObjectStorage, WeakMap, WeakReference, ou l'opérateur d'identité (`===`) ne sont pas affectées.

### Liste de paramètres

`object`
  Un objet non paresseux, ou un objet paresseux initialisé.
`initializer`
  Une fonction de rappel avec la même signature et le même but que dans ReflectionClass::newLazyGhost().
`options`

  `options` peut être une combinaison des drapeaux suivants :

  `ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE`
    Par défaut, la sérialisation d'un objet paresseux déclenche son initialisation. Définir ce drapeau empêche l'initialisation, permettant aux objets paresseux d'être sérialisés sans être initialisés.
  `ReflectionClass::SKIP_DESTRUCTOR`
    Par défaut, le destructeur de l'objet est appelé (s'il existe) avant de le marquer comme paresseux. Ce drapeau désactive ce comportement, permettant aux objets d'être réinitialisés comme paresseux sans appeler le destructeur.

### Valeurs de retour

Aucune valeur n'est retournée.

### Erreurs / Exceptions

Une ReflectionException si l'objet est paresseux et non initialisé.

Une Error si l'objet est en cours d'initialisation, ou si les propriétés de l'objet sont itérées avec `foreach`.

### Voir aussi

- ReflectionClass::newLazyGhost() - Créer une nouvelle instance fantôme paresseuse
- ReflectionClass::resetAsLazyProxy() - Réinitialise un objet et le marque comme paresseux