are you using ph4 or php5?
PHP5
are you setting $this->this yourself or 'is it just there'?
No, I'm not setting it, just reading it (see addChildObject() code
below), if that's what you mean.
-Alan
Alan Pinstein wrote:
Hi all-
I've been trying to avoid circular references in some data import
scripts and finally figured out how to do it. However, I wanted
to ask you guys to make sure that what I'm doing is something
that's legit and can be relied on into the future.
Also, please note that I tried searching the archives for "this"
and "this->this" but the searcher keeps removing "this" from my
query! So sorry if this is asked and answered....
So, my objects are in a parent-child relationship and they both
have links to each other... pretty standard circular reference
scenario:
ParentObject:
function addChildObject($c)
{
$this->children[] = $c;
$c->setParent($this->this); // this syntax is the only
way
assuming php4, I would say this these lines should be (difficult
to tell though, without more insight/code/brains to play with ;-):
function addChildObject(&$c) {
$this->children[] =& $c;
$c->setParent( $this );
}
I found to make "$this" not get refcounted here
}
Now, to make this work as it should without incrementing the ref
counts when storing the link to the parent, setParent() needs to
have a non-refcounted pointer to the object:
ChildObject:
// need & in both places to make the ref not get ref-counted
function setParent(&$parent)
{
$this->-parent = &$parent;
}
My question is, is "$this->this" valid syntax? Can it be relied
on? Is my overall approach sane?
It's very important that I get memory management working in such
a way here because the objects are used in large loops for
importing data, and without this, the script uses unbounded
amounts of memory. With this, it uses a finite amount of memory
and works beautifully.
Thanks in advance,
Alan
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php