(PHP 8 >= 8.4.0)
ReflectionClass::resetAsLazyGhost — オブジェクトをリセットしてレイジーとしてマークする
$object
, callable $initializer
, int $options
= 0): void
既存のobject
をリセットし、レイジーとしてマークします。
オブジェクトのデストラクタが存在する場合、
ReflectionClass::SKIP_DESTRUCTOR
フラグが指定されていない限り、
デストラクタが呼び出されます。特殊なケースとして、オブジェクトが初期済のプロキシの場合、
実インスタンスはプロキシから切り離されます。実インスタンスが他で参照されていない場合、
SKIP_DESTRUCTOR
フラグに関係なく、
そのデストラクタが呼び出されます。
動的プロパティは削除され、クラスで宣言されたプロパティの値は
unset() と同等の方法で破棄され、
レイジーとしてマークされます。これは、オブジェクトが追加のプロパティを持つ
サブクラスのインスタンスである場合、これらのプロパティは変更されず、
レイジーにもならないことを意味します。
読み取り専用プロパティも、
final
であるかクラス自体がfinal
である場合、
変更されず、レイジーにもなりません。
レイジーとしてマークされたプロパティがない場合、オブジェクトはレイジーとしてマークされません。 レイジーオブジェクトのライフサイクル も参照してください。
それ以外の場合、このメソッドを呼び出した後、 オブジェクトの動作は ReflectionClass::newLazyGhost()によって作成されたオブジェクトと同じになります (上記で説明したサブクラスと読み取り専用プロパティを除く)。
オブジェクトは他のものに置き換えられず、その同一性は変わりません。
spl_object_id()、
spl_object_hash()、
SplObjectStorage、
WeakMap、
WeakReference、または
一致演算子
(===
)などの機能は影響を受けません。
object
initializer
options
options
には
以下のフラグを組み合わせて指定できます:
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
ReflectionClass::SKIP_DESTRUCTOR
値を返しません。
オブジェクトがレイジーで未初期化の場合、ReflectionExceptionを スローします。
オブジェクトが初期化中である場合、またはforeach()で プロパティが反復処理されている場合、Errorを スローします。