Hi,
I'm struggling with the problem that cross-referenced objects don't get
destroyed. I can off course write a method to break the cross-reference,
but that's kind of a pain in the butt, especially if the cross-reference
is not strait forward.
To solve this I'm thinking of building one of 2 thing:
1.) Write a destroy() function which works much like a close function on
a recourse, changing the object to a zval of type 'unknown'.
2.) Specify that a property of an object does not count for the
reference count of a zval.
3.) Write code to find cross-references and destroy the objects still.
The first solution should be quite easy to implement, but you need to
call destroy() to free the object, introducing the whole alloc/free
responsibility thing to PHP.
The second solution would require some extra keyword within the class,
but require no special code within the code using the object. Though I
wouldn't have a clue how how to implement this or what would be the
consequences.
I don't think the third solution is really possible or would at least
cause performance problems.
I could use some comment on this problem. Or perhaps I'm just looking at
it from a complete wrong angle.
Thanks,
Arnold
PS. I don't want to start a 'cross-referencing is wrong' discussion. I
use it, because it's useful in some occasions.