Хочу рассказать об одной особенности использования замыканий в PHP-5.3. Думаю, для многих она покажется очевидной, но тем не менее. Оказывается, используя use ($var1,..) — мы можем передавать переменные по ссылке: use (& $var1,..).
Пример, иллюстрирующий возможные варианты использования (и просьба не тыкать носом в array_sum() ;) ):
На выходе получим:
Enjoy!
Пример, иллюстрирующий возможные варианты использования (и просьба не тыкать носом в array_sum() ;) ):
$rows = array(1, 2, 3);
$total = 0 ;
// Случай раз - use ($total) без ссылки
array_walk($rows, function($row) use ($total) {
$total += $row;
});
echo "Total is $total\n";
// Случай два - use (& $total) по ссылке
array_walk($rows, function($row) use (& $total) {
$total += $row;
});
echo "Total is $total\n";
На выходе получим:
Total is 0 Total is 6
Enjoy!