PHP 8.1.31 Released!

ReflectionClass::newLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::newLazyGhostCréer une nouvelle instance fantôme paresseuse

Description

public ReflectionClass::newLazyGhost(callable $initializer, int $options = 0): object

Créer une nouvelle instance fantôme paresseuse de la classe, en attachant l'initializer à celle-ci. Le constructeur n'est pas appelé, et les propriétés ne sont pas définies à leur valeur par défaut. Cependant, l'objet sera automatiquement initialisé en invoquant l'initializer la première fois que son état est observé ou modifié. Voir déclencheurs d'initialisation et séquence d'initialisation.

Liste de paramètres

initializer
L'initialiseur est une fonction de rappel avec la signature suivante:

initializer(object $object): void
object
L'object en cours d'initialisation. À ce stade, l'objet n'est plus marqué comme paresseux, et y accéder ne déclenche plus l'initialisation.

La fonction initializer doit renvoyer null ou ne rien renvoyer.
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.

Valeurs de retour

Renvoyer une instance fantôme paresseuse. Si l'objet n'a pas de propriétés, ou si toutes ses propriétés sont statiques ou virtuelles, une instance normale (non paresseuse) est renvoyée. Voir aussi Cycle de vie des objets paresseux.

Erreurs / Exceptions

Une ReflectionException si la classe est interne ou étends une classe interne, sauf stdClass.

Exemples

Exemple #1 Utilisation basique

<?php

class Example {
public function
__construct(public int $prop) {
echo
__METHOD__, "\n";
}
}

$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function (Example $object) {
$object->__construct(1);
});

var_dump($object);
var_dump($object instanceof Example);

// Déclenche l'initialisation, et récupère la propriété après cela
var_dump($object->prop);

?>

L'exemple ci-dessus va afficher :

lazy ghost object(Example)#3 (0) {
  ["prop"]=>
  uninitialized(int)
}
bool(true)
Example::__construct
int(1)

Voir aussi

add a note

User Contributed Notes

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