Documentación offline PHP master

ReflectionClass::newLazyGhost

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

ReflectionClass::newLazyGhost

Crear una nueva instancia fantasma perezosa

Descripción#

public ReflectionClass::newLazyGhost(callable $initializer, [int $options]): object
```php

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](#language.oop5.lazy-objects.initialization-triggers) y [ secuencia de inicialización](#language.oop5.lazy-objects.initialization-sequence).

## Parámetros

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

```php
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#

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)

Véase también#

Objetos perezosos

ReflectionClass::newLazyProxy

ReflectionClass::newInstanceWithoutConstructor

ReflectionClass::resetAsLazyGhost

ReflectionClass::markLazyObjectAsInitialized

ReflectionClass::initializeLazyObject

ReflectionClass::isUninitializedLazyObject

ReflectionProperty::setRawValueWithoutLazyInitialization

ReflectionProperty::skipLazyInitialization

ReflectionProperty::isLazy