Как стать автором
Обновить

PHP, Closures, use & references

Время на прочтение1 мин
Количество просмотров775
Хочу рассказать об одной особенности использования замыканий в 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

Публикации

Истории

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн