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