(PHP 8 >= 8.4.0)
ReflectionClass::newLazyGhost — Cria uma nova instância de fantasma lento
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 .
initializer
object
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.
initializer
deve retornar null
ou nenhum
valor.
options
options
pode ser uma combinação das seguintes
opções:
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
Retorna uma instância de proxy 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.
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)