|
Posted by comp.lang.php on 12/05/05 21:38
Wow, ok, that was a surprise! I didn't think isset() had the ability
to declare a variable on the fly like that. I was under the impression
that it only checked for instantiation, which would be implied that if
a variable is not yet declared, it certainly could never be
instantiated as you cannot instantiate a nonexistent entity.
That solved the problem but potentially opened up a big PHP logic flaw
in the process.
Thanx!
Phil
Oli Filth wrote:
> comp.lang.php said the following on 05/12/2005 19:02:
> > [PHP]
> > function blah($item) {
> > if (!isset($baseDir)) {
> > static $baseDir = '';
> > $baseDir = $item;
> > print_r("baseDir = $baseDir\n");
> > }
> >
> > $dirID = opendir($item);
> > while (($fyl = readdir($dirID)) !== false) {
> > if (is_dir("$baseDir/$fyl")) blah($item);
> > // DO OTHER STUFF IF IT IS A FILE
> > }
> > }
> > [/PHP]
> >
> > I am using PHP 4.3.2 and the following occurs within blah() :
> >
> > [Quote]
> > baseDir = /home/me/stuff
> > baseDir = /home/me/stuff/.
> > baseDir = /home/me/stuff/./..
> > [/Quote]
> >
> > I was under the impression that a static variable retains its value
> > throughout a function (or method) recursive memory stack. However, it
> > changes everytime because it apparently loses its set value.
>
> You are using $baseDir before you have declared it static, so PHP treats
> it as non-static.
>
>
> --
> Oli
[Back to original message]
|