Как стать автором
Поиск
Написать публикацию
Обновить

PHP, Closures, use & references

Время на прочтение1 мин
Количество просмотров799
Хочу рассказать об одной особенности использования замыканий в PHP-5.3. Думаю, для многих она покажется очевидной, но тем не менее. Оказывается, используя use ($var1,..) — мы можем передавать переменные по ссылке: use (& $var1,..).

Пример, иллюстрирующий возможные варианты использования (и просьба не тыкать носом в 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!
Теги:
Хабы:
Всего голосов 20: ↑18 и ↓2+16
Комментарии26

Публикации

Ближайшие события