(PHP 8 >= 8.4.0)
ReflectionClass::newLazyGhost — Créer une nouvelle instance fantôme paresseuse
Crée 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.
initializerL'initialiseur est une fonction de rappel avec la signature suivante:
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.
Renvoie 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.
Une ReflectionException si la classe est interne ou étend une classe interne, sauf stdClass.
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)