Edit report at https://bugs.php.net/bug.php?id=55493&edit=1

 ID:                 55493
 Updated by:         dmi...@php.net
 Reported by:        vovan-ve at yandex dot ru
 Summary:            Superglobal variable variables with ${expression} in
                     non-global scope
 Status:             Assigned
 Type:               Feature/Change Request
 Package:            Variables related
 Operating System:   Windows XP SP3
 PHP Version:        5.3.7
 Assigned To:        dmitry
 Block user comment: N
 Private report:     N

 New Comment:

ZE decides if a variable have to be fetched from the global scope at compile 
time checking predefined list of super-global variables.

The variable fetching by name (e.g. $$name) is always done from local scope.

Of course it's possible to extend executor to check for list of super-global 
variables at run-time, but it'll introduce significant slowdown for each fetch 
by name. I really don't like it.


Previous Comments:
------------------------------------------------------------------------
[2011-08-24 12:50:02] larue...@php.net

In this case, I make a patch for this, and the test result can be found on: 
http://pastebin.com/6pTuLEer

------------------------------------------------------------------------
[2011-08-24 12:48:57] larue...@php.net

The following patch has been added/updated:

Patch Name: bug55493.patch
Revision:   1314190137
URL:        
https://bugs.php.net/patch-display.php?bug=55493&patch=bug55493.patch&revision=1314190137

------------------------------------------------------------------------
[2011-08-24 10:21:23] vovan-ve at yandex dot ru

When I tried to obfuscate a part of code I was surprised by this strange 
behariour. Of course, current implementation is correct on the one hand. But on 
the other hand the situation looks funny: this way is allowad, and this too, 
but this is not.

------------------------------------------------------------------------
[2011-08-24 04:11:14] larue...@php.net

sure, it can be fixed by decide target symbol table again in the execution time 
for not const OPs, 

but I don't think this is really necessary . :)

------------------------------------------------------------------------
[2011-08-23 18:16:12] ka...@php.net

This still seems a little strange that we cannot pick the correct symbol table 
at compile time, all it should need would be a check to see if the compiled 
value is matching one thats a super global.

I remember to have encountered something similar a while back, which I'm not 
sure if I reported or not, but def. something we should look into at some point.

Dmitry, can you clarify this?

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=55493


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=55493&edit=1

Reply via email to