(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
不返回值。