ReflectionClass::newLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::newLazyGhostCrear una nueva instancia fantasma perezosa

Descripción

public ReflectionClass::newLazyGhost(callable $initializer, int $options = 0): object

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.

Parámetros

initializer
El inicializador es una función de retrollamada con la siguiente firma:

initializer(object $object): void
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.

Valores devueltos

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.

Errores/Excepciones

Una ReflectionException si la clase es interna o extiende una clase interna, excepto stdClass.

Ejemplos

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)

Ver también