PHP: Hypertext Preprocessor (original) (raw)
ReflectionClass::markLazyObjectAsInitialized
(PHP 8 >= 8.4.0)
ReflectionClass::markLazyObjectAsInitialized — Marks a lazy object as initialized without calling the initializer or factory
Parameters
object
The object to mark as initialized.
Return Values
Returns object
.
Examples
Example #1 Marking an uninitialized lazy object as initialized
<?php class Example { public string $prop1; public string $prop2; public string $prop3 = 'default value'; }$reflector = new ReflectionClass(Example::class);$object = <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>l</mi><mi>e</mi><mi>c</mi><mi>t</mi><mi>o</mi><mi>r</mi><mo>−</mo><mo>></mo><mi>n</mi><mi>e</mi><mi>w</mi><mi>L</mi><mi>a</mi><mi>z</mi><mi>y</mi><mi>G</mi><mi>h</mi><mi>o</mi><mi>s</mi><mi>t</mi><mo stretchy="false">(</mo><mi>f</mi><mi>u</mi><mi>n</mi><mi>c</mi><mi>t</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">reflector->newLazyGhost(function (</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">re</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">ec</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">or</span><span class="mord">−</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">n</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span><span class="mord mathnormal">L</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">zy</span><span class="mord mathnormal">G</span><span class="mord mathnormal">h</span><span class="mord mathnormal">os</span><span class="mord mathnormal">t</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">u</span><span class="mord mathnormal">n</span><span class="mord mathnormal">c</span><span class="mord mathnormal">t</span><span class="mord mathnormal">i</span><span class="mord mathnormal">o</span><span class="mord mathnormal">n</span><span class="mopen">(</span></span></span></span>object) { echo "Initializer called\n"; $object->prop1 = 'initialized'; });$reflector->getProperty('prop1') ->setRawValueWithoutLazyInitialization($object, 'prop1 value');var_dump($object);$reflector->markLazyObjectAsInitialized($object);var_dump($object); ?>
The above example will output:
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" }
Example #2 Marking an initialized object as initialized
<?php class Example { public string $prop1; public string $prop2; public string $prop3 = 'default value'; }$reflector = new ReflectionClass(Example::class);$object = <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>l</mi><mi>e</mi><mi>c</mi><mi>t</mi><mi>o</mi><mi>r</mi><mo>−</mo><mo>></mo><mi>n</mi><mi>e</mi><mi>w</mi><mi>L</mi><mi>a</mi><mi>z</mi><mi>y</mi><mi>G</mi><mi>h</mi><mi>o</mi><mi>s</mi><mi>t</mi><mo stretchy="false">(</mo><mi>f</mi><mi>u</mi><mi>n</mi><mi>c</mi><mi>t</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">reflector->newLazyGhost(function (</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">re</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">ec</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">or</span><span class="mord">−</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">n</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span><span class="mord mathnormal">L</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">zy</span><span class="mord mathnormal">G</span><span class="mord mathnormal">h</span><span class="mord mathnormal">os</span><span class="mord mathnormal">t</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">u</span><span class="mord mathnormal">n</span><span class="mord mathnormal">c</span><span class="mord mathnormal">t</span><span class="mord mathnormal">i</span><span class="mord mathnormal">o</span><span class="mord mathnormal">n</span><span class="mopen">(</span></span></span></span>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); ?>
The above example will output:
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" }
See Also
- Lazy objects
- ReflectionClass::newLazyGhost() - Creates a new lazy ghost instance
- ReflectionClass::initializeLazyObject() - Forces initialization of a lazy object
- ReflectionClass::isUninitializedLazyObject() - Checks if an object is lazy and uninitialized
Found A Problem?
There are no user contributed notes for this page.