ReflectionClass::initializeLazyObject
レイジーオブジェクトを強制的に初期化する
説明
public object ReflectionClass::initializeLazyObject(object $object
)
指定されたobject
を強制的に初期化します。この
メソッドは、オブジェクトがレイジーでないか、既に初期化されている場合は
効果がありません。それ以外の場合、初期化は
初期化シーケンス
の通り進行します。
注意:
ほとんどの場合、このメソッドを呼び出す必要はありません。なぜなら、
レイジーオブジェクトはその状態が参照または変更されたときに
自動的に初期化されるからです。
パラメータ
-
object
-
初期化するオブジェクト。
戻り値
object
がレイジープロキシであれば、
その実インスタンスを、そうでなければ object
自身を返します。
例
例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($object);
$reflector->initializeLazyObject($object);
var_dump($object);
?>
lazy ghost object(Example)#3 (0) {
["prop"]=>
uninitialized(int)
}
Initializer called
object(Example)#3 (1) {
["prop"]=>
int(1)
}
参考
- レイジーオブジェクト
- ReflectionClass::newLazyGhost
- ReflectionClass::markLazyObjectAsInitialized
- ReflectionClass::isUninitializedLazyObject