Cria uma nova instância de fantasma lento

# ReflectionClass::newLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::newLazyGhost — Cria uma nova instância de fantasma lento

### Descrição

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

Cria uma nova instância fantasma lenta da classe, anexando o `initializer` a ela. O construtor não é chamado e as propriedades não são definidas com seus valores padrão. Entretanto, o objeto será inicializado automaticamente invocando o `initializer` na primeira vez que seu estado for observado ou modificado. Consulte Gatilhos de Inicialização e Sequência de Inicialização .

### Parâmetros

`initializer`
  O inicializador é uma função de retorno com a seguinte assinatura:

  function initializer(object `$object`): void
  `object`
    O parâmetro `object` informa o objeto que está sendo inicializado. Neste ponto, o objeto não está mais marcado como lento e acessá-lo não aciona a inicialização novamente.
  A função `initializer` deve retornar `null` ou nenhum valor.
`options`

  `options` pode ser uma combinação das seguintes opções:

  `ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE`
    Por padrão, a serialização de um objeto lento aciona sua inicialização. Definir essa opção impede a inicialização, permitindo que objetos lentos sejam serializados sem serem inicializados.

### Valor Retornado

Retorna uma instância de fantasma lento. Se o objeto não tiver propriedades ou se todas as suas propriedades forem estáticas ou virtuais, uma instância normal (não-lenta) será retornada. Veja também Ciclo de Vida de Objetos Lentos.

### Erros/Exceções

Um Error se a classe for interna ou estender uma classe interna exceto stdClass.

### Exemplos

Exemplo #1 Uso básico

    <?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);

    // Aciona a inicialização e busca a propriedade depois disso
    var_dump($object->prop);

    ?>

O exemplo acima produzirá:

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

### Veja Também

- Objetos lentos
- ReflectionClass::newLazyProxy() - Cria uma nova instância de proxy lento
- ReflectionClass::newInstanceWithoutConstructor() - Cria uma nova instância de classe sem invocar o construtor
- ReflectionClass::resetAsLazyGhost() - Redefine um objeto e o marca como lento
- ReflectionClass::markLazyObjectAsInitialized() - Marca um objeto lento como inicializado sem chamar o inicializador ou a fábrica
- ReflectionClass::initializeLazyObject() - Força a inicialização de um objeto lento
- ReflectionClass::isUninitializedLazyObject() - Verifica se um objeto é lento e não inicializado
- ReflectionProperty::setRawValueWithoutLazyInitialization() - Define o valor bruto da propriedade sem acionar a inicialização lenta
- ReflectionProperty::skipLazyInitialization() - Marca a propriedade como não lenta
- ReflectionProperty::isLazy() - Verifica se uma propriedade é lenta

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