Posted by Oli Filth on 12/05/05 21:56
comp.lang.php said the following on 05/12/2005 19:38:
> Wow, ok, that was a surprise! I didn't think isset() had the ability
> to declare a variable on the fly like that.
It doesn't.
> I was under the impression
> that it only checked for instantiation
It does.
> 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.
>
>
> 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
>
>
--
Oli
[Back to original message]
|