[nycphp-talk] Working with recursive "single-referenced" methods and static variables
Matthew Terenzio
webmaster at localnotion.com
Tue Feb 24 17:30:10 EST 2004
I had a similar problem once and never figured it out. I thought it was
a deficiency in the object oriented aspects of PHP. Something that
would be addressed in PHP 5.
On Feb 24, 2004, at 4:59 PM, Phil Powell wrote:
> [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
>
>
>
>
> _______________________________________________
> talk mailing list
> talk at lists.nyphp.org
> http://lists.nyphp.org/mailman/listinfo/talk
More information about the talk
mailing list