(PHP 8 >= 8.4.0)
ReflectionClass::isUninitializedLazyObject β ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π»Π΅Π½ΠΈΠ² Π»ΠΈ ΠΈ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π»Π΅Π½ΠΈΠ²ΡΠΉ ΠΈ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ.
object
ΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ object β Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π»Π΅Π½ΠΈΠ²ΡΠΉ
ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ½Π°ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
<?php
class Example
{
public function __construct(public int $prop) {}
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->__construct(1);
});
var_dump($reflector->isUninitializedLazyObject($object));
var_dump($object->prop);
var_dump($reflector->isUninitializedLazyObject($object));
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
bool(true) Initializer called int(1) bool(false)