(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
objectobject 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 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.
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)