(PHP 8 >= 8.4.0)
ReflectionClass::markLazyObjectAsInitialized — Marca un objeto perezoso como inicializado sin llamar al inicializador o a la fábrica
Marca un objeto perezoso como inicializado sin llamar al inicializador o
a la fábrica. Esto no tiene ningún efecto si object no es
perezoso o ya está inicializado.
El efecto de la llamada a este método es el mismo que se describe para los objetos fantasma
(independientemente de la estrategia perezosa de object) en
secuencia
de inicialización, excepto que no se llama al inicializador.
Después de esto, el objeto es indistinguible de un objeto que nunca fue perezoso y
fue creado con
ReflectionClass::newInstanceWithoutConstructor(),
excepto por el valor de las propiedades que ya han sido inicializadas con
ReflectionProperty::setRawValueWithoutLazyInitialization()
o ReflectionProperty::skipLazyInitialization().
object
Devuelve object.
Ejemplo #1 Marcar un objeto perezoso no inicializado como inicializado
<?php
class Example
{
public string $prop1;
public string $prop2;
public string $prop3 = 'default value';
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->prop1 = 'initialized';
});
$reflector->getProperty('prop1')
->setRawValueWithoutLazyInitialization($object, 'prop1 value');
var_dump($object);
$reflector->markLazyObjectAsInitialized($object);
var_dump($object);
?>El ejemplo anterior mostrará:
lazy ghost object(Example)#3 (1) {
["prop1"]=>
string(11) "prop1 value"
["prop2"]=>
uninitialized(string)
["prop3"]=>
uninitialized(string)
}
object(Example)#3 (2) {
["prop1"]=>
string(11) "prop1 value"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}
Ejemplo #2 Marcar un objeto perezoso inicializado como inicializado
<?php
class Example
{
public string $prop1;
public string $prop2;
public string $prop3 = 'default value';
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->prop1 = 'initialized';
});
$reflector->getProperty('prop1')
->setRawValueWithoutLazyInitialization($object, 'prop1 value');
var_dump($object->prop3);
var_dump($object);
$reflector->markLazyObjectAsInitialized($object);
var_dump($object);
?>El ejemplo anterior mostrará:
Initializer called
string(13) "default value"
object(Example)#3 (2) {
["prop1"]=>
string(11) "initialized"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}
object(Example)#3 (2) {
["prop1"]=>
string(11) "initialized"
["prop2"]=>
uninitialized(string)
["prop3"]=>
string(13) "default value"
}