PHP Conference Nagoya 2025

ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhostRé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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top