(PHP 8 >= 8.4.0)
ReflectionClass::newLazyGhost — 新しいレイジーゴーストインスタンスを作成する
クラスの新しいレイジーゴーストインスタンスを作成し、
initializer
をアタッチします。コンストラクタは呼び出されず、
プロパティはデフォルト値に設定されません。オブジェクトの状態を
初めて参照または変更する時に、
initializer
をにより自動的に初期化されます。
初期化トリガーおよび
初期化シーケンス
を参照してください。
initializer
object
object
。この時点では、
オブジェクトはもはやレイジーとしてマークされておらず、
アクセスしても再び初期化がトリガーされることはありません。
initializer
関数は null
を返すか、
値を返さない必要があります。
options
options
には以下のフラグを組み合わせて
指定できます:
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
レイジーゴーストインスタンスを返します。オブジェクトにプロパティがない場合、または そのプロパティがすべてstaticまたはvirtualの場合、通常の(レイジーではない)インスタンスが 返されます。 レイジーオブジェクトの ライフサイクルも参照してください。
例1 基本的な使用法
<?php
class Example {
public function __construct(public int $prop) {
echo __METHOD__, "\n";
}
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function (Example $object) {
$object->__construct(1);
});
var_dump($object);
var_dump($object instanceof Example);
// 初期化をトリガーし、その後プロパティを取得します
var_dump($object->prop);
?>
上の例の出力は以下となります。
lazy ghost object(Example)#3 (0) { ["prop"]=> uninitialized(int) } bool(true) Example::__construct int(1)