sneskid Posted March 4, 2007 Share Posted March 4, 2007 say you have this: function abc($v=0){ static $r; if($v) $r = &$v; var_dump($r); } $test = 'hello'; abc(&$test); $test = 'bye'; abc(); output: string(5) "hello" NULL should be: string(5) "hello" string(3) "bye" Was this done for security reasons? or is it just a PHP limitation? Although less convenient, this bug can be worked around like so: function abc($v=0){ static $r; if($v) $r = $v; var_dump($r['test']); } $test = 'hello'; abc(array('test'=>&$test)); $test = 'bye'; abc(); output: string(5) "hello" string(3) "bye" So why won't static variable retain a direct reference?? Link to comment https://forums.phpfreaks.com/topic/41077-static-function-references/ Share on other sites More sharing options...
roopurt18 Posted March 4, 2007 Share Posted March 4, 2007 http://us2.php.net/manual/en/language.variables.scope.php#37427 Doesn't look like you can do it. Link to comment https://forums.phpfreaks.com/topic/41077-static-function-references/#findComment-199015 Share on other sites More sharing options...
sneskid Posted March 4, 2007 Author Share Posted March 4, 2007 in case you are wondering, i tried having the & at the function params too, no effect. Having the function create the "array workaround" makes things nicer and more transparent: function abc(&$v=0){ static $r=array(); if($v) $r[]=&$v; // or just $r = array('test'=>&$v); else var_dump($r); } $test1 = 'hello'; $test2 = 'stuff'; abc($test1); abc($test2); $test1 = 'bye'; $test2 = 'things'; abc(); Link to comment https://forums.phpfreaks.com/topic/41077-static-function-references/#findComment-199023 Share on other sites More sharing options...
sneskid Posted March 4, 2007 Author Share Posted March 4, 2007 thanks roopurt Link to comment https://forums.phpfreaks.com/topic/41077-static-function-references/#findComment-199024 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.