(PHP 8 >= 8.4.0)
ReflectionClass::resetAsLazyGhost — Redefine um objeto e o marca como lento
$object, callable $initializer, int $options = 0): void
Redefine um objeto existente informado em object e marca-o como lento.
O destrutor do objeto é chamado (se existir), a menos que
a opção ReflectionClass::SKIP_DESTRUCTOR seja especificada. No
caso especial em que o objeto é um proxy inicializado, a instância real
é desanexada do proxy. Se a instância real não for mais referenciada
em outro lugar, seu destrutor será chamado independentemente da
opção SKIP_DESTRUCTOR.
As propriedades dinâmicas são removidas e o valor das propriedades declaradas na
classe é descartado como se unset() tivesse sido chamada, e
marcado como lento. Isso implica que se o objeto for uma instância de uma subclasse
com propriedades adicionais, essas propriedades não serão modificadas e não serão
tornadas lentas.
Propriedades
somente leitura também não são modificadas e não se tornam lentas se forem
marcadas com final ou se a própria classe for final.
Se nenhuma propriedade foi marcada como lenta, o objeto não será marcado como lento. Consulte também Ciclo de Vida de Objetos Lentos.
Caso contrário, após chamar este método, o comportamento do objeto será o mesmo de um objeto criado por ReflectionClass::newLazyGhost() (exceto para propriedades de subclasse e somente leitura, conforme descrito acima).
O objeto não é substituído por outros, e sua identidade se mantém
inalterada. Funcionalidades como spl_object_id(),
spl_object_hash(),
SplObjectStorage, WeakMap,
WeakReference ou
o operador identidade
(===) não são afetadas.
objectUm objeto não-lento ou um objeto lento inicializado.
initializerUma função de retorno do inicializador com a mesma assinatura e finalidade de ReflectionClass::newLazyGhost().
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 esta opção impede a inicialização, permitindo que objetos lentos sejam serializados sem serem inicializados.
ReflectionClass::SKIP_DESTRUCTOR
Por padrão, o destrutor de objetos é chamado (se houver) antes de torná-lo lento. Isso fornece segurança em relação a qualquer estado preexistente no objeto. Esta opção desativa esse comportamento, permitindo que os objetos sejam redefinidos como lentos sem chamar o destrutor.
Nenhum valor é retornado.
Uma exceção ReflectionException é lançada se o objeto for lento e não inicializado.
Um Error é lançado se o objeto estiver sendo inicializado, ou se as
propriedades do objeto estão sendo iteradas com
foreach.