(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.
initializerEl inicializador es una función de retrollamada con la siguiente firma:
object
El 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.
La funció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
Por omisión, la serialización de un objeto perezoso desencadena su inicialización. Definir este flag evita la inicialización, permitiendo que los objetos perezosos sean serializados sin ser inicializados.
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)