Crear una nueva instancia fantasma perezosa

# ReflectionClass::newLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::newLazyGhost — Crear una nueva instancia fantasma perezosa

### Descripción

public function 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:

  function 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 ejemplo anterior mostrará:

    lazy ghost object(Example)#3 (0) {
      ["prop"]=>
      uninitialized(int)
    }
    bool(true)
    Example::__construct
    int(1)

### Ver también

- Objetos perezosos
- ReflectionClass::newLazyProxy() - Crear una nueva instancia proxy perezosa
- ReflectionClass::newInstanceWithoutConstructor() - Crea una nueva instancia de la clase sin invocar el constructor
- ReflectionClass::resetAsLazyGhost() - Reinicia un objeto y lo marca como perezoso
- ReflectionClass::markLazyObjectAsInitialized() - Marca un objeto perezoso como inicializado sin llamar al inicializador o a la fábrica
- ReflectionClass::initializeLazyObject() - Forzar la inicialización de un objeto perezoso
- ReflectionClass::isUninitializedLazyObject() - Verifica si un objeto es perezoso y no inicializado
- ReflectionProperty::setRawValueWithoutLazyInitialization() - Define el valor bruto de una propiedad sin activar la inicialización perezosa
- ReflectionProperty::skipLazyInitialization() - Marca una propiedad como no perezosa
- ReflectionProperty::isLazy() - Verifica si una propiedad es perezosa

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open