Marque un objet paresseux comme initialisé sans appeler l'initialiseur ou la fabrique

# ReflectionClass::markLazyObjectAsInitialized

(PHP 8 >= 8.4.0)

ReflectionClass::markLazyObjectAsInitialized — Marque un objet paresseux comme initialisé sans appeler l'initialiseur ou la fabrique

### Description

public function ReflectionClass::markLazyObjectAsInitialized(object `$object`): object

Marque un objet paresseux comme initialisé sans appeler l'initialiseur ou la fabrique. Cela n'a aucun effet si `object` n'est pas paresseux ou est déjà initialisé.

L'effet de l'appel de cette méthode est le même que décrit pour les objets fantômes (peu importe la stratégie de paresse de `object`) dans séquence d'initialisation, sauf que l'initialiseur n'est pas appelé. Après cela, l'objet est indiscernable d'un objet qui n'était jamais paresseux et a été créé avec ReflectionClass::newInstanceWithoutConstructor(), excepté pour la valeur des propriétés qui ont déjà été initialisées avec ReflectionProperty::setRawValueWithoutLazyInitialization() ou ReflectionProperty::skipLazyInitialization().

### Liste de paramètres

`object`
  L'objet à marquer comme initialisé.

### Valeurs de retour

Renvoie `object`.

### Exemples

Exemple #1 Marquer un objet paresseux non initialisé comme initialisé

    <?php
    class Example
    {
        public string $prop1;
        public string $prop2;
        public string $prop3 = 'default value';
    }

    $reflector = new ReflectionClass(Example::class);

    $object = $reflector->newLazyGhost(function ($object) {
        echo "Initializer called\n";
        $object->prop1 = 'initialized';
    });

    $reflector->getProperty('prop1')
              ->setRawValueWithoutLazyInitialization($object, 'prop1 value');

    var_dump($object);

    $reflector->markLazyObjectAsInitialized($object);

    var_dump($object);
    ?>

L'exemple ci-dessus va afficher :

    lazy ghost object(Example)#3 (1) {
      ["prop1"]=>
      string(11) "prop1 value"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      uninitialized(string)
    }
    object(Example)#3 (2) {
      ["prop1"]=>
      string(11) "prop1 value"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(13) "default value"
    }

Exemple #2 Marquer un objet paresseux initialisé comme initialisé

    <?php
    class Example
    {
        public string $prop1;
        public string $prop2;
        public string $prop3 = 'default value';
    }

    $reflector = new ReflectionClass(Example::class);

    $object = $reflector->newLazyGhost(function ($object) {
        echo "Initializer called\n";
        $object->prop1 = 'initialized';
    });

    $reflector->getProperty('prop1')
              ->setRawValueWithoutLazyInitialization($object, 'prop1 value');

    var_dump($object->prop3);
    var_dump($object);

    $reflector->markLazyObjectAsInitialized($object);

    var_dump($object);
    ?>

L'exemple ci-dessus va afficher :

    Initializer called
    string(13) "default value"
    object(Example)#3 (2) {
      ["prop1"]=>
      string(11) "initialized"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(13) "default value"
    }
    object(Example)#3 (2) {
      ["prop1"]=>
      string(11) "initialized"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(13) "default value"
    }

### Voir aussi

- Objet paresseux
- ReflectionClass::newLazyGhost() - Créer une nouvelle instance fantôme paresseuse
- ReflectionClass::initializeLazyObject() - Force l'initialisation d'un objet paresseux
- ReflectionClass::isUninitializedLazyObject() - Vérifie si un objet est paresseux et non initialisé

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