Re: Re: Strange behaviour of static declared content.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/18/07, Colin Guthrie <gmane@xxxxxxxxxxxxxx> 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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux