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

# ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

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

### 説明

public function ReflectionClass::resetAsLazyGhost(object `$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`
  ReflectionClass::newLazyGhost() と同じシグネチャと目的を持つイニシャライザコールバック。
`options`

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

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

### 戻り値

値を返しません。

### エラー / 例外

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

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

### 参考

- ReflectionClass::newLazyGhost() - 新しいレイジーゴーストインスタンスを作成する
- ReflectionClass::resetAsLazyProxy() - オブジェクトをリセットしてレイジーとしてマークする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open