ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhostRedefine um objeto e o marca como lento

Descrição

public ReflectionClass::resetAsLazyGhost(object $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.

Parâmetros

object
Um objeto não-lento ou um objeto lento inicializado.
initializer
Uma 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.

Valor Retornado

Nenhum valor é retornado.

Erros/Exceções

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.

Veja Também