Créer une nouvelle instance fantôme paresseuse

# ReflectionClass::newLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::newLazyGhost — Créer une nouvelle instance fantôme paresseuse

### Description

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

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.

### Liste de paramètres

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

  function 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

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.

### Erreurs / Exceptions

Une ReflectionException si la classe est interne ou étend 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

- Objet paresseux
- ReflectionClass::newLazyProxy() - Créer une nouvelle instance proxy paresseuse
- ReflectionClass::newInstanceWithoutConstructor() - Crée une nouvelle instance de la classe sans invoquer le constructeur
- ReflectionClass::resetAsLazyGhost() - Réinitialise un objet et le marque comme paresseux
- ReflectionClass::markLazyObjectAsInitialized() - Marque un objet paresseux comme initialisé sans appeler l'initialiseur ou la fabrique
- ReflectionClass::initializeLazyObject() - Force l'initialisation d'un objet paresseux
- ReflectionClass::isUninitializedLazyObject() - Vérifie si un objet est paresseux et non initialisé
- ReflectionProperty::setRawValueWithoutLazyInitialization() - Définit la valeur brute d'une propriété sans déclencher l'initialisation paresseuse
- ReflectionProperty::skipLazyInitialization() - Marque une propriété comme non paresseuse
- ReflectionProperty::isLazy() - Vérifie si une propriété est paresseuse

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open