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