(PHP 8 >= 8.4.0)
ReflectionClass::newLazyProxy — Cria uma nova instância de proxy lento
Cria uma nova instância de proxy lento da classe, anexando a
função factory
a ela. O construtor não é
chamado e as propriedades não são definidas com seus valores padrão. Quando é
feita uma tentativa de observar ou modificar o estado do proxy pela primeira
vez, a função de fábrica é chamada para fornecer uma instância real, que
é então anexada ao proxy. Depois disso, todas as interações subsequentes
com o proxy são encaminhadas para a instância real. Consulte
Gatilhos de
Inicialização e Sequência
de Inicialização .
factory
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.
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->newLazyProxy(function (Example $object) {
$realInstance = new Example(1);
return $realInstance;
});
var_dump($object);
var_dump($object instanceof Example);
// Aciona a inicialização e encaminha a busca de propriedade para a instância real
var_dump($object->prop);
var_dump($object);
?>
O exemplo acima produzirá:
lazy proxy object(Example)#3 (0) { ["prop"]=> uninitialized(int) } bool(true) Example::__construct int(1) lazy proxy object(Example)#3 (1) { ["instance"]=> object(Example)#4 (1) { ["prop"]=> int(1) } }