(PHP 8 >= 8.4.0)
ReflectionClass::newLazyGhost — Crear una nueva instancia fantasma perezosa
Crear una nueva instancia fantasma perezosa de la clase, adjuntando
el initializer
a esta. El constructor no es
llamado, y las propiedades no son definidas a su valor por defecto.
Sin embargo, el objeto será automáticamente inicializado invocando
el initializer
la primera vez que su estado es observado
o modificado. Ver
disparadores
de inicialización y
secuencia de inicialización.
initializer
object
object
en curso de inicialización. En este punto,
el objeto ya no está marcado como perezoso, y acceder a él no desencadena
la inicialización.
initializer
debe devolver null
o no devolver nada.
options
options
puede ser una combinación de los siguientes flags:
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
Devolver una instancia fantasma perezosa. Si el objeto no tiene propiedades, o si todas sus propiedades son estáticas o virtuales, se devuelve una instancia normal (no perezosa). Ver también Ciclo de vida de los objetos perezosos.
Una ReflectionException si la clase es interna o extiende una clase interna, excepto stdClass.
Ejemplo #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);
// Desencadena la inicialización, y obtiene la propiedad después de esto
var_dump($object->prop);
?>
El resultado del ejemplo sería:
lazy ghost object(Example)#3 (0) { ["prop"]=> uninitialized(int) } bool(true) Example::__construct int(1)