2013-07-06 4 views
9

Per restituire un riferimento da una funzione in PHP occorre:È possibile restituire un riferimento da una chiusura in PHP?

... utilizzare l'operatore di riferimento nel & sia la dichiarazione di funzione e quando viene assegnato il valore restituito una variabile.

questo finisce per assomigliare:

function &func() { return $ref; } 
$reference = &func(); 

Sto cercando di restituire un riferimento da una chiusura. In un esempio semplificato, quello che voglio ottenere è:

$data['something interesting'] = 'Old value'; 

$lookup_value = function($search_for) use (&$data) { 
    return $data[$search_for]; 
} 

$my_value = $lookup_value('something interesting'); 
$my_value = 'New Value'; 

assert($data['something interesting'] === 'New Value'); 

io non riesco a ottenere la sintassi normale per restituire i riferimenti da funzioni di lavoro.

risposta

11

Il codice dovrebbe essere simile a questa:

$data['something interesting'] = 'Old value'; 

$lookup_value = function & ($search_for) use (&$data) { 
    return $data[$search_for]; 
}; 

$my_value = &$lookup_value('something interesting'); 
$my_value = 'New Value'; 

assert($data['something interesting'] === 'New Value'); 

check out this:

+0

Got it in uno. Un'altra bizzarra scelta di sytax da ricordare. Grazie! – Sam152