2013-07-06 7 views
9

W celu powrotu odwołanie z funkcji w PHP należy:Czy można zwrócić referencję z zamknięcia w PHP?

... użyć operatora referencji & w zarówno w deklaracji funkcji i przy przypisywaniu zwracanej wartości do zmiennej.

ten kończy się patrząc jak:

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

Próbuję zwrócić odwołanie od zamknięcia. W w uproszczony przykład co chcę osiągnąć to:

$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'); 

I nie wydają się uzyskać regularne składnię powrocie referencje od funkcji roboczych.

Odpowiedz

11

Kod powinien wyglądać następująco:

$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'); 

Skontrolować this Wymeldowanie:

+0

dostał w jednym. Kolejny dziwny wybór sytax do zapamiętania. Dzięki! – Sam152