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