2024 年日本 PHP 研討會

ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhost重置物件並標記為延遲載入

說明

public ReflectionClass::resetAsLazyGhost(物件 $object, 可呼叫 $initializer, 整數 $options = 0):

重置現有的 object 物件並標記為延遲載入。

除非指定了 ReflectionClass::SKIP_DESTRUCTOR 旗標,否則會呼叫物件的解構子(如果存在)。在物件是已初始化代理的特殊情況下,實際執行個體會從代理中分離。如果實際執行個體在其他地方不再被參考,則無論 SKIP_DESTRUCTOR 旗標為何,都會呼叫其解構子。

動態屬性會被移除,並且在類別上宣告的屬性值會被捨棄,如同呼叫了 unset() 函式一樣,並標記為延遲載入。這意味著如果物件是具有額外屬性的子類別的執行個體,則這些屬性不會被修改,也不會被標記為延遲載入。如果 唯讀屬性final 或類別本身是 final,則它們也不會被修改或標記為延遲載入。

如果沒有屬性被標記為延遲載入,則物件不會被標記為延遲載入。另請參閱 延遲物件生命週期

否則,在呼叫此方法後,物件的行為與由 ReflectionClass::newLazyGhost() 建立的物件相同(除了子類別和唯讀屬性,如上所述)。

物件不會被另一個物件取代,其識別保持不變。諸如 spl_object_id()spl_object_hash()SplObjectStorageWeakMapWeakReference識別運算子 (===) 等功能不受影響。

參數

object
非延遲載入的物件,或已初始化的延遲載入物件。
initializer
初始化器回呼,其簽名和用途與 ReflectionClass::newLazyGhost() 中的相同。
options

options 可以是以下旗標的組合

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
預設情況下,序列化延遲載入物件會觸發其初始化。設定此旗標可防止初始化,允許延遲載入物件在未初始化的情況下進行序列化。
ReflectionClass::SKIP_DESTRUCTOR
預設情況下,在將物件標記為延遲載入之前,會呼叫物件的解構子(如果有的話)。這提供了關於物件中任何先前狀態的安全性。此旗標會停用該行為,允許物件在不呼叫解構子的情況下重置為延遲載入。

回傳值

無回傳值。

錯誤/例外

如果物件是延遲載入且未初始化,則會產生 ReflectionException

如果物件正在初始化,或者正在使用 foreach 迭代物件屬性,則會產生 Error

另請參閱

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top