Jump to content

static function references


sneskid

Recommended Posts

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

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();

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.