On 10/18/07, Colin Guthrie <[EMAIL PROTECTED]> wrote:
>
> Stut wrote:
> > Stut wrote:
> >> In that case you need a new foo. That's the only way you're going to
> >> reset the internal static if the API doesn't give you a way to do it.
> >>
> >> $f=new foo();
> >> $f->bar();
> >> $f->bar();
> >> $g=new foo();
> >> $g->bar();
> >
> > Actually, scratch that, won't work. Not even unsetting $f before
> > creating the new object works. This kinda sucks since it means PHP does
> > not support static function-scoped vars.
>
> Yeah I tried that same thing too and then wondered if I had
> misinterpreted how function-scoped statics worked.
>
> I've often used a method like:
>
> function Init()
> {
> static $bln_inited = false;
> if (!$bln_inited)
> {
>   // Do stuff
>   $bln_inited = true;
> }
> }
>
>
> I had always assumed that the static definition here was
> function-scoped... I guess I should have tested more but still it caught
> me off guard this morning when I played with it.
>
> Correct me if I'm wrong but does C++ not do it as both of us initially
> thought? e.g. static is function scoped rather than globally scoped when
> used within a class method?


i didnt see anything in the manual regarding the use of static inside a
class member function.
i would consider the behavior undefined, for php, unless someone can procure
a doc.

-nathan

Reply via email to