Marca um objeto lento como inicializado sem chamar o inicializador ou a fábrica

# ReflectionClass::markLazyObjectAsInitialized

(PHP 8 >= 8.4.0)

ReflectionClass::markLazyObjectAsInitialized — Marca um objeto lento como inicializado sem chamar o inicializador ou a fábrica

### Descrição

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

Marca um objeto lento como inicializado sem chamar o inicializador ou a fábrica. Não tem efeito se `object` não for lento ou se já tiver sido inicializado.

O efeito de chamar este método é o mesmo descrito para Objetos Fantasma (independentemente da estratégia de lentidão do `object`) na sequência de inicialização, exceto que o inicializador não é chamado. Depois disso, o objeto é indistinguível de um objeto que nunca foi lento e foi criado com ReflectionClass::newInstanceWithoutConstructor(), exceto pelo valor das propriedades que já foram inicializadas com ReflectionProperty::setRawValueWithoutLazyInitialization() ou ReflectionProperty::skipLazyInitialization().

### Parâmetros

`object`
  O objeto a ser marcado como inicializado.

### Valor Retornado

Retorna `object`.

### Exemplos

Exemplo #1 Marcando um objeto lento não inicializado como inicializado

    <?php
    class Example
    {
        public string $prop1;
        public string $prop2;
        public string $prop3 = 'valor padrão';
    }

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

    $object = $reflector->newLazyGhost(function ($object) {
        echo "Inicializador acionado\n";
        $object->prop1 = 'inicializado';
    });

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

    var_dump($object);

    $reflector->markLazyObjectAsInitialized($object);

    var_dump($object);
    ?>

O exemplo acima produzirá:

    lazy ghost object(Example)#3 (1) {
      ["prop1"]=>
      string(14) "valor de prop1"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      uninitialized(string)
    }
    object(Example)#3 (2) {
      ["prop1"]=>
      string(14) "valor de prop1"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(12) "valor padrão"
    }

Exemplo #2 Marcando um objeto inicializado como inicializado

    <?php
    class Example
    {
        public string $prop1;
        public string $prop2;
        public string $prop3 = 'valor padrão';
    }

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

    $object = $reflector->newLazyGhost(function ($object) {
        echo "Inicializador acionado\n";
        $object->prop1 = 'inicializado';
    });

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

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

    $reflector->markLazyObjectAsInitialized($object);

    var_dump($object);
    ?>

O exemplo acima produzirá:

    Inicializador acionado
    string(13) "valor padrão"
    object(Example)#3 (2) {
      ["prop1"]=>
      string(11) "inicializado"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(13) "valor padrão"
    }
    object(Example)#3 (2) {
      ["prop1"]=>
      string(11) "inicializado"
      ["prop2"]=>
      uninitialized(string)
      ["prop3"]=>
      string(13) "valor padrão"
    }

### Veja Também

- Objetos lentos
- ReflectionClass::newLazyGhost() - Cria uma nova instância de fantasma lento
- ReflectionClass::initializeLazyObject() - Força a inicialização de um objeto lento
- ReflectionClass::isUninitializedLazyObject() - Verifica se um objeto é lento e não inicializado

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