I wonder why method is named __toclose but not __noreference ?
Because it doesn't mean there is no reference, that's what __gc is for already.
The method is called when a specific variable referencing the value goes out of scope. There may be other variables still happily referencing the value.
Regards,
Matthew