ReflectionClass::resetAsLazyGhost

オブジェクトをリセットしてレイジーとしてマークする

説明

public void ReflectionClass::resetAsLazyGhost(object $object, callable $initializer, int $options = 0)

既存のobjectをリセットし、レイジーとしてマークします。

オブジェクトのデストラクタが存在する場合、 ReflectionClass::SKIP_DESTRUCTORフラグが指定されていない限り、 デストラクタが呼び出されます。特殊なケースとして、オブジェクトが初期済のプロキシの場合、 実インスタンスはプロキシから切り離されます。実インスタンスが他で参照されていない場合、 SKIP_DESTRUCTORフラグに関係なく、 そのデストラクタが呼び出されます。

動的プロパティは削除され、クラスで宣言されたプロパティの値は unset と同等の方法で破棄され、 レイジーとしてマークされます。これは、オブジェクトが追加のプロパティを持つ サブクラスのインスタンスである場合、これらのプロパティは変更されず、 レイジーにもならないことを意味します。 読み取り専用プロパティも、 finalであるかクラス自体がfinalである場合、 変更されず、レイジーにもなりません。

レイジーとしてマークされたプロパティがない場合、オブジェクトはレイジーとしてマークされません。 レイジーオブジェクトのライフサイクル も参照してください。

それ以外の場合、このメソッドを呼び出した後、 オブジェクトの動作は ReflectionClass::newLazyGhostによって作成されたオブジェクトと同じになります (上記で説明したサブクラスと読み取り専用プロパティを除く)。

オブジェクトは他のものに置き換えられず、その同一性は変わりません。 spl_object_idspl_object_hashSplObjectStorageWeakMapWeakReference、または 一致演算子 (===)などの機能は影響を受けません。

パラメータ

object
非レイジーなオブジェクト、または初期化されたレイジーオブジェクト。
initializer
ReflectionClass::newLazyGhost と同じシグネチャと目的を持つイニシャライザコールバック。
options

optionsには 以下のフラグを組み合わせて指定できます:

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
デフォルトでは、レイジーオブジェクトのシリアライズは 初期化がトリガーされます。このフラグを設定すると、 初期化せずにシリアライズできるようになります。
ReflectionClass::SKIP_DESTRUCTOR
デフォルトでは、オブジェクトをレイジーにする前に、そのデストラクタが(存在すれば) 呼び出されます。これは、オブジェクト内の既存の状態に関する安全性を提供します。 このフラグはその動作を無効にし、デストラクタを呼び出さずにオブジェクトを レイジーとしてリセットできるようにします。

戻り値

値を返しません。

エラー / 例外

オブジェクトがレイジーで未初期化の場合、ReflectionExceptionを スローします。

オブジェクトが初期化中である場合、またはforeachで プロパティが反復処理されている場合、Errorを スローします。

参考

  • ReflectionClass::newLazyGhost
  • ReflectionClass::resetAsLazyProxy