(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
objectobject 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 ejemplo anterior mostrará :
lazy ghost object(Example)#3 (0) {
["prop"]=>
uninitialized(int)
}
bool(true)
Example::__construct
int(1)