[nycphp-talk] Working with recursive "single-referenced" methods and static variables
Phil Powell
phillip.powell at adnet-sys.com
Tue Feb 24 16:59:28 EST 2004
[CODE]
class DepartmentTree {
function &buildTree($id) {
static $html;
if (!isset($html)) {
// DO STUFF HERE TO $html
}
// DO MORE STUFF
if ($condition_is_met) $this->buildTree($newID);
$this->html = $html;
}
}
[/CODE]
The above (and greatly paraphrased from the 100-line actual class) class
and method, in its real form, totally works inasmuch as it successfully
always creates an HTML hierarchial tree of departments mapped with child
departments. I have no problem with this.. as long as I only use the
class once.
However, there is a case where I need the entire contents of the
departments table dumped out into a resultset, and to do that I figured
I would just loop through a query of records that have no parent ID;
each id in each row I seed into $tree->buildTree():
[CODE]
for ($i = 0; $i < @sizeof($result); $i++) {
$tree->buildTree($result[$i]->id);
$this->deptArray += $tree->convert_to_array();
$tree->clearTreeHTML();
}
[/CODE]
The "convert_to_array()" method will convert the contents of $this->html
from HTML content to an array, keeping the original hierarchial order;
the "clearTreeHTML()" method will set $this->html to NULL or "".
Problem is, it does not do that, because apparently "static $html" keeps
an instance of it running in the single-referenced instance of
"buildTree" method.
Based on how best I can explain my problem, and sorry I can't explain it
any better w/o dumping the actual code line by line, how have you all
figured out the best way to generate multiple, unique instances from a
single-referenced method that uses a static local variable?
Thanx
Phil
--
Phil Powell
Web Developer
ADNET Systems, Inc.
11260 Roger Bacon Drive, Suite 403
Reston, VA 20190-5203
Phone: (703) 709-7218 x107 Cell: (571) 437-4430 FAX: (703) 709-7219
EMail: Phillip.Powell at adnet-sys.com AOL IM: SOA Dude
More information about the talk
mailing list