From:             derick
Operating system: *
PHP version:      5.3SVN-2011-09-12 (SVN)
Package:          Scripting Engine problem
Bug Type:         Bug
Bug description:Compiler creates (unused) compiled variables for self::$foo

Description:
------------
When having the following code:

<?php
class foo {
    function bar() {
        self::$bar = 42;
    }
}
?>

The compiler generates compiled variable !0 for $bar, even though it's a
class variable:

derick@whisky:/tmp$ php -dvld.active=1 -r 'class foo { function bar() {
self::$bar = 42; } }'
Finding entry points
Branch analysis from position: 0
Return found
filename:       Command line code
function name:  (null)
number of ops:  2
compiled vars:  none
line     # *  op                           fetch          ext  return 
operands
---------------------------------------------------------------------------------
   1     0  >   NOP                                                      
         1    > RETURN                                                  
null

branch: #  0; line:     1-    1; sop:     0; eop:     1
path #1: 0, 
Class foo:
Function bar:
Finding entry points
Branch analysis from position: 0
Return found
filename:       Command line code
function name:  bar
number of ops:  4
compiled vars:  !0 = $bar
line     # *  op                           fetch          ext  return 
operands
---------------------------------------------------------------------------------
         0  >   ZEND_FETCH_CLASS                              1          
         1      FETCH_W                      static member       $1     
'bar'
         2      ASSIGN                                                  
$1, 42
         3    > RETURN                                                  
null

branch: #  0; line:     1-    1; sop:     0; eop:     3
path #1: 0, 
End of function bar.

End of class foo.
14:41 <@Derick> dmitry: I am wondering why self::$foo creates a compiled
variable. Any idea?
14:42 <@Derick> dmitry: it creates it, but it's never used
14:44 <@dmitry> I see. It's probably because od simple one-pass compiler
that first interpret $foo as local variable and only then as a class
variable :)
14:44 <@Derick> dmitry: any way we can fix that perhaps?
14:44 <@dmitry> Derick: could you please create a bug and assign it to me
14:44 <@Derick> yes, sure




-- 
Edit bug report at https://bugs.php.net/bug.php?id=55673&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=55673&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=55673&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=55673&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=55673&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=55673&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=55673&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=55673&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=55673&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=55673&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=55673&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=55673&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=55673&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=55673&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=55673&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=55673&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=55673&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=55673&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=55673&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=55673&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=55673&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=55673&r=mysqlcfg

Reply via email to